Reverse word order
1. Method 1 (Use the characteristics of stringBuffer to solve)
class Solution {
public String reverseWords(String s) {
String[] s1 = s.replaceAll("\\s{1,}"," ").trim().split(" ");
StringBuffer stringBuffer = new StringBuffer();
for (int i = s1.length - 1; i >= 0 ; i--){
stringBuffer.append(s1[i] + " ");
}
return stringBuffer.toString().trim();
}
}
2. Double pointer solution
class Solution {
public String reverseWords(String s) {
s = s.trim();
int j = s.length() - 1, i = j;
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();
}
}