作者:有只小猪飞走啦
博客地址:
前言
本题目是在我自己理解并解出来之后的分享,如果哪里理解错了,或者你不太理解的,都可以来私聊我哈!
一,题目
描述
在命令行输入如下命令:
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\le s\le 1000\1≤s≤1000
进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(n)\O(n)
二,解析
本题通过以空格和双引号为间隔,统计参数个数。对于双引号,通过添加flag,保证双引号中的空格被输出。
三,代码
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
int count =1;
for(int i =0;i<s.length();i++){
if(s.charAt(i)=='"'){
do{
i++;
}while(s.charAt(i)!='"');
}
if(s.charAt(i)==' '){
count++;
}
}
System.out.println(count);
int flag = 1;
for(int i =0;i<s.length();i++){
if(s.charAt(i)=='"'){
flag^=1;
}
if(s.charAt(i) !=' '&&s.charAt(i)!='"'){
System.out.print(s.charAt(i));
}
if(s.charAt(i)==' '&&flag==0){
System.out.print(s.charAt(i));
}
if(s.charAt(i)==' '&&flag==1){
System.out.println();
}
}
}
}
这就是这期博客的所有内容,希望对你有帮助!下期再见~