牛客--参数解析
📜个人简介 |
⭐️个人主页:摸鱼の文酱博客主页🙋♂️
🍑博客领域: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年技术见证,附赠技术全景图