题目链接:
https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677?tpId=37&&tqId=21297&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking
import java.util.*;
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++){
if(str.charAt(i) == '"'){//遍历双引号里面的字符串
do{
i++;
}while(str.charAt(i) != '"');
}
if(str.charAt(i) == ' '){//统计空格的数量
count++;
}
}
System.out.println(count + 1);//仔细观察不难分开的字符串数量=空格+1
int flag = 1;//创建一个flag,令其等于1
for(int i = 0; i < str.length(); i++){//遍历字符串
if(str.charAt(i) == '"'){
flag ^= 1;//如果遍历到第一个双引号,让flag与1进行异或操作
//如果flag = 0,表示还在遍历双引号内的字符串
//遍历到第二个双引号,再进行异或操作,那么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){
//flag = 1表明已经遍历完双引号内的这个字符串
//遍历到空格就进行换行
System.out.println();
}
}
}
}