题解 | #参数解析#
参数解析
https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677
这道题就是双引号的处理方式。
双引号,如果左面的,需要等到右面的才能够获得一个结果
这里面要注意引号里面也有空格,所以对空格的处理需要注意是否在引号当中。
时间复杂度O(n)
空间复杂度O(n)
import java.util.ArrayList; import java.util.List; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str=in.nextLine(); StringBuffer sb = new StringBuffer(); int result=0; List<String> resultStr = new ArrayList(); boolean hasLeft=false; for(char a:str.toCharArray()){ if(a==' ' && !hasLeft){ if(sb.length()>0){ resultStr.add(sb.toString()); result++; sb=new StringBuffer(); } }else if(a=='\"'){ if(hasLeft){ result++; resultStr.add(sb.toString()); sb=new StringBuffer(); hasLeft=false; }else{ hasLeft=true; continue; } }else{ sb.append(a); } } if(sb.length()>0){ result++; resultStr.add(sb.toString()); } System.out.println(result); resultStr.stream().forEach((a)->{ System.out.println(a); }); } }