翻转单词顺序
问题陈述
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。
1 2 3 4 5
| 示例:
输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
|
思路分析
先对字符串去除首位空格,定义i,j指向字符串尾,i–,当i为空格返回第一个字符串;然后继续i–,当i不是空格,j指向i。重复,用stringbuilder存储。
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution{ public String reverseWords(String s){ s=s.trim(); int i=s.length()-1,j=i; StringBuilder res=new StringBuilder(); while(i>=0){ while(i>=0&&s.charAt(i)!=' '){ i--; } res.append(s.substring(i+1,j+1)+" "); while(i>=0&&s.charAt(i)==' '){ i--; } j=i; } return res.toString().trim(); }
}
|