题解 | #参数解析#

参数解析

http://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677

思路就是用一个flag来标记'"'是否出现过,这样就可以分成""内和非""内两种情况来处理了,我感觉就是一种栈匹配的思想,因为我最开始想用栈来做,感觉太麻烦,然后就想到可以用一个标记位来代替栈就行了。

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        boolean flag = false;
        StringBuilder sb = new StringBuilder();
        List<String> ans = new ArrayList<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (!flag) {
                if (c == ' ') {
                    ans.add(sb.toString());
                    sb = new StringBuilder();
                } else if (c == '"') {
                    sb = new StringBuilder();
                    flag = true;
                } else {
                    sb.append(c);
                }
            } else {
                if (c == '"') {
                    ans.add(sb.toString());
                    sb = new StringBuilder();
                    flag = false;
                    i++;
                } else {
                    sb.append(c);
                }
            }
        }
        if (sb.length() > 0) ans.add(sb.toString());
        System.out.println(ans.size());
        for (String a : ans) {
            System.out.println(a);
        }
    }
全部评论

相关推荐

玉无心❤️:发照片干啥 发简历啊
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务