1. 程式人生 > >給定一個字串,逐個翻轉字串中的每個單詞。

給定一個字串,逐個翻轉字串中的每個單詞。

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--;         }     } }