题解 | #参数解析#
参数解析
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);
}
}