給定一個字串,逐個翻轉字串中的每個單詞。
LintCode中的反轉字串,自己寫的不對 參考答案寫出的
思路: 先將整個陣列反轉,然後根據空格出現的位置,判斷每個單詞,再將整個單詞反轉 這裡每個單詞的位置是 index - i-1
但是由於不能保證最後一個單詞後面還有空格,所以最後一個要單獨反轉
public class Test { public static void main(String [] args) { char [] c = {'a','b', ' ','d',' ','e','r'}; char [] s = reverseWords(c); System.out.print(s); } public static char[] reverseWords(char[] str) { if(str == null || str.length == 0){ return str; } //翻轉整個陣列 reverse(str, 0, str.length - 1); int index = 0; //翻轉每一個單詞 for(int i = 0; i < str.length; i++){ if(str[i] == ' ') { reverse(str, index, i - 1); index = i + 1; } } //翻轉最後一個單詞 reverse(str, index, str.length - 1); return str; } private static void reverse(char[] str, int start, int end){ while(start <= end){ char temp = str[start]; str[start] = str[end]; str[end] = temp; start++; end--; } } }