题目
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。
代码实现
分割 + 倒序
class Solution {
public String reverseWords(String s) {
String[] split = s.trim().split("\\s+");
StringBuilder builder = new StringBuilder();
for (int i = split.length-1; i >= 0; i--) {
builder.append(split[i]);
if (i != 0){
builder.append(" ");
}
}
return builder.toString();
}
}
双指针
class Solution {
public String reverseWords(String s) {
//去掉首尾的空格
s.trim();
StringBuilder builder = new StringBuilder();
int i = s.length()-1,j = s.length();
while (i >= 0){
//找到空格
while (i >= 0 && s.charAt(i) != ' '){
i--;
}
//substring()是左闭右开的函数
builder.append(s.substring(i+1,j));
//跳过多个空格
while (i >= 0 && s.charAt(i) == ' '){
i--;
}
builder.append(' ');
j = i + 1;
}
return builder.toString().trim();
}
}