/* * 186.Reverse Words in a String II * 2016-6-6 by Mingyang * Given s = "the sky is blue", * return "blue is sky the". * Could you do it in-place without allocating extra space? * 这个题目是I的翻版,只是多了一个条件,能否不用额外的内存,所以我在这里先把所有string reverse一遍 * 然后把每个词语再reverse一遍 */ public void reverseWords(char[] s) { reverse(s, 0, s.length-1); int start = 0; for(int i = 0; i< s.length; i++){ if(s[i] == ' '){ reverse(s, start, i-1); start = i+1; } } reverse(s, start, s.length-1); } public void reverse(char[] s, int l, int r){ while(l < r){ char temp = s[l]; s[l] = s[r]; s[r] = temp; l++; r--; } }