186. Reverse Words in a String II
Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters.
The input string does not contain leading or trailing spaces and the words are always separated by a single space.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
Could you do it in-place without allocating extra space?
Related problem: Rotate Array
此题和rotate array比较像,解题思路也是一样的,代码如下:
public class Solution {
public void reverseWords(char[] s) {
int n =s.length;
reverse(s,0,n-1);
int start= 0;
for(int i=0;i<n;i++){
if(s[i]==' '){
reverse(s,start,i-1);
start = i+1;
}
}
reverse(s,start,n-1);
}
public void reverse(char[] s,int start,int end){
while(start<end){
char temp = s[end];
s[end] = s[start];
s[start] = temp;
start++;
end--;
}
}
}