public void reverse(char[] array, int left, int right) {
while (left < right){
char tmp = array[left];
array[left] = array[right];
array[right] = tmp;
left++;
right--;
}
}
public String reverseWords(String input) {
char[] cur = input.toCharArray();
reverse(cur, 0, cur.length - 1);
int start = 0;
for (int i = 0; i < cur.length; i++){
//start of word
//first word, or i - 1 == ' '
if (cur[i] != ' ' && (i == 0 || cur[i - 1] == ' ')){
start = i;
}
if (cur [i] != ' ' && (i == cur.length - 1 || cur[i + 1] == ' ')){
reverse(cur, start, i);
}
}
return new String(cur);
}