Problem
Reverse Words in a String II
Given an input string , reverse the string word by word.Example
Input: ["t","h","e"," ","s","k","y"," ","i","s"," ","b","l","u","e"]
["b","l","u","e"," ","i","s"," ","s","k","y"," ","t","h","e"]
Note
A word is defined as a sequence of non-space characters.
The input string does not contain leading or trailing spaces.The words are always separated by a single space.Follow up: Could you do it in-place without allocating extra space?Solution
class Solution { public void reverseWords(char[] str) { int start = 0, end = str.length-1; //reverse all chars reverse(str, start, end); for (int i = 0; i < str.length; i++) { //reverse all words back, except for the last one if (str[i] == ' ') { reverse(str, start, i-1); start = i+1; } } //reverse the last word back reverse(str, start, end); } private void reverse(char[] str, int i, int j) { while (i < j) { char temp = str[i]; str[i] = str[j]; str[j] = temp; i++; j--; } }}