参数解析

在命令行输入如下命令: 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)

输入描述:
输入一行字符串,可以有空格
输出描述:
输出参数个数,分解后的参数,每个参数都独占一行

示例1

输入

xcopy /s c:\\ d:\\e

输出

4
xcopy
/s
c:\
d:\\e

Java 编程

package cn.net.javapub.javaintroduction.example;

/**
 * @author: shiyuwang
 */

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s;
        while ((s = br.readLine()) != null) {
            char[] chars = s.toCharArray();
            StringBuffer ana = new StringBuffer();
            int flag = 0;
            int count = 1;
            for (int i = 0; i < chars.length; i++) {
                if (chars[i] == '\"') {
                    flag++;
                    continue;
                }
                if (chars[i] != ' ') {
                    ana.append(chars[i]);
                }
                if (chars[i] == ' ' && flag % 2 != 0) {
                    ana.append(chars[i]);
                }
                if (chars[i] == ' ' && flag % 2 == 0) {
                    ana.append("\n");
                    count++;
                }
            }
            System.out.println(count + "\n" + ana.toString());
        }
    }
}

展示效果:

华为OD机试 - 参数解析 (Java 2024 E卷 100分)_字符串