class Solution {
public String reverseWords(String s) {
StringBuilder sb = new StringBuilder();
int endIndex = -1;
for (int i = s.length()-1; i>=0; i--){
if(s.charAt(i)!=' ' && endIndex==-1){
endIndex = i;
// key: do not change i in case if this is a single character word
i++;
}else if(s.charAt(i)!=' ' && endIndex>=0 && (i==0 || s.charAt(i-1)==' ')){
sb.append(s.substring(i, endIndex+1)+' ');
endIndex=-1;
}
}
sb.setLength(sb.length()-1);
return sb.toString();
}
}