题目描述:
将一句话的单词进行倒置,标点不倒置。比如 "I like beijing.",经过处理后变为:"beijing. like I"。
字符串长度不超过100。
输入描述
输入一个仅包含小写字母、空格、'.' 的字符串,长度不超过100。'.' 只出现在最后一个单词的末尾。
输出描述
依次输出倒置之后的字符串,以空格分割。
示例
输入
I like beijing.
输出
beijing. like I
解题思路:
题目地址:https://www.nowcoder.com/questionTerminal/8869d99cf1264e60a6d9eff4295e5bab
从后往前遍历o(N)时间复杂度,用一个变量记录一下单词的末尾,然后只需要判断字母的前一个是否为空格,如果是则直接打印该单词并且手动添加一个空格
当走出循环时就只剩下第一个单词未打印但是单词末尾是被记录过的,在用循环打印一下即可
代码:
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String a=sc.nextLine();
int k=a.length();
if(a.length()==0) {
return;
}
for (int j=a.length()-1; j!=0;) {
if(a.charAt(j-1)==' ') {
int i=j;
while(i<k) {
System.out.print(a.charAt(i));
i++;
}
k=j-1;
j-=2;
System.out.print(" ");
continue;
}
j--;
}
int i=0;
while(i<k) {
System.out.print(a.charAt(i));
i++;
}
}