//双指针
class Solution {
public String reverseWords(String s) {
//处理字符串 首尾空格
String str = s.trim();
//双指针
int right = str.length() - 1;
//left 指向 最右, 从右向左扫描
int left = right;
//结果集
StringBuilder res = new StringBuilder();
while(left >= 0){
//找第一个空格
while(left >= 0 && str.charAt(left) != ' '){
left--;
}
//找到后,说明现在 双指针的区间内 为一个单词 加入结果集,加一个空格分隔
res.append(s.substring(left + 1,right + 1) + ' ');
//跳过单词之间的空格
while(left >= 0 && s.charAt(left) == ' '){
left--;
}
//将当前的left 指针 赋值给 right,找下一个单词
right = left;
}
return res.toString().trim();
}
}
class Solution {
public String reverseWords(String s) {
//去除首尾空格,并用空格拆分单词
String[] str = s.trim().split(" ");
//返回集
StringBuilder res = new StringBuilder();
for(int i = str.length - 1; i >= 0;i--){
if(str[i].equals(" ") || str[i].equals("")){
continue;
}
res.append(str[i]);
res.append(" ");
}
return res.toString().trim();
}
}