class Solution {
public String reverseWords(String s) {
char[] ch = s.toCharArray();
int fast = 0;
int slow = 0;
for(;fast<s.length();fast++){
if (ch[fast]!=' '){
if (slow!=0){
ch[slow++] = ' ';
}
while (fast<s.length() && ch[fast]!=' '){
ch[slow] = ch[fast];
slow++;
fast++;
}
}
}
String str = String.valueOf(ch);
String subString = str.substring(0, slow);
char[] sub_ch = subString.toCharArray();
reverse(sub_ch,0,slow-1);
int fa=0;
int sl=0;
for(;fa<sub_ch.length;fa++){
if(sub_ch[fa]!=' '){
continue;
}else{
reverse(sub_ch,sl,fa-1);
sl = fa+1;
}
}
reverse(sub_ch,sl,fa-1);
return new String(sub_ch);
}
public void reverse(char[] chr,int i,int j){
for(;i<j;i++,j--){
char temp = chr[i];
chr[i] = chr[j];
chr[j] = temp;
}
}
}
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();
}
}