> 文档中心 > 牛客--参数解析

牛客--参数解析


📜个人简介

⭐️个人主页:摸鱼の文酱博客主页🙋‍♂️
🍑博客领域:java编程基础,mysql
🍅写作风格:干货,干货,还是tmd的干货
🌸精选专栏:【Java】【mysql】 【算法刷题笔记】
🎯博主的码云gitee,平常博主写的程序代码都在里面。
🚀支持博主:点赞👍、收藏⭐、留言💬
🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

文章目录

  • 📃参数解析
    • 🎯1.原题链接
    • 🎯2.题目要求
    • 🎯3.基础框架
    • 🎯4.解题思路
    • 🎯5.完整代码
    • 🎯6.涉及算法&总结

📃参数解析

🎯1.原题链接

参数解析

🎯2.题目要求

  在命令行输入如下命令:
xcopy /s c:\ d:\e,
各个参数如下:
参数1:命令字xcopy
参数2:字符串/s
参数3:字符串c:\
参数4: 字符串d:\e
请编写一个参数解析程序,实现将命令行各个参数解析出来。
解析规则:
1.参数分隔符为空格
2.对于用""包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” "d:“时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\program,注意输出参数时,需要将”"去掉,引号不存在嵌套情况。
3.参数不定长
4.输入由用例保证,不会出现不符合要求的输入
数据范围:字符串长度:1≤s≤1000
进阶:时间复杂度:O(n) ,空间复杂度:O(n)
输入一行字符串,可以有空格
输出描述:
输出参数个数,分解后的参数,每个参数都独占一行

  样例输入: xcopy /s c:\\ d:\\e

  样例输出: 4
      xcopy
      /s
      c:\\
      d:\\e

🎯3.基础框架

java版本的基础框架代码如下:

import java.util.*;public class Main{    }

🎯4.解题思路

  1.本题通过以空格和双引号为间隔,统计参数个数。
  2.对于双引号,通过添加flag,保证双引号中的空格被输出

🎯5.完整代码

import java.util.Scanner;import java.util.ArrayList;import java.util.List;public class Main {    public static void main(String[] args) { Scanner sc=new Scanner(System.in); String str=sc.nextLine(); int count=0; for(int i=0;i<str.length();i++){//如果碰到双引号,我们就需要i++直到找到下一个双引号     if(str.charAt(i)=='"'){  do{      i++;  }while(str.charAt(i)!='"');     }     if(str.charAt(i)==' '){  count++;     } } System.out.println(count+1); int flag=1; for(int i=0;i<str.length();i++){//遇到第一个双引号,flag变为0,//遇到第二个双引号结束后flag重新变为1//只要在打印双引号中的内容的时候flag的值始终为0     if(str.charAt(i)=='"'){  flag^=1;     }      //除了双引号和特殊空格以外的字符都要打印     if(str.charAt(i)!=' '&&str.charAt(i)!='"'){  System.out.print(str.charAt(i));     }//双引号中的空格需要打印     if(str.charAt(i)==' '&&flag==0){  System.out.print(str.charAt(i));     }//双引号外碰到空格,需要换行     if(str.charAt(i)==' '&&flag==1){  System.out.println();     } }    }}

🎯6.涉及算法&总结

牛客--参数解析 与50位技术专家面对面 牛客--参数解析 20年技术见证,附赠技术全景图