1. 程式人生 > >【leetcode】反轉字串中的單詞III

【leetcode】反轉字串中的單詞III

題目要求

給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序

  • 示例1:
  • 輸入:“Let’s take LeetCode contest”
  • 輸出:“s’teL ekat edoCteeL tsetnoc”
  • 注意:在字串中,每個單詞由單個空格分隔,並且字串中不會有任何額外的空格。

核心思想

將字串以“ ”分隔,將每個單詞進行反轉,再進行整合。

完整程式碼如下

/**
 * 給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序
 * 示例1:
 * 輸入:“Let's take LeetCode contest”
 * 輸出:“s'teL ekat edoCteeL tsetnoc”
 * 注意:在字串中,每個單詞由單個空格分隔,並且字串中不會有任何額外的空格。
 */
public class Solution { public StringBuffer reverseWords(String s) { StringBuffer newStr = new StringBuffer(); String[] list = s.split(" "); for(int i = 0; i < list.length - 1; i++) { newStr.append(reverseString(list[i]) + " "); } newStr.append(reverseString(list[list.length - 1]));
return newStr; } //定義一個翻轉函式用來反轉單個單詞 public String reverseString(String s) { char[] strArrays = s.toCharArray(); int i = 0; int j = strArrays.length - 1; while(i < j) { char temp = strArrays[i]; strArrays[i] = strArrays[j]; strArrays[j] = temp; i++; j--; } return
new String(strArrays); } public static void main(String[] args) { Solution sl = new Solution(); System.out.println(sl.reverseWords("Let's take LeetCode contest")); } }

補充

這裡對String,StringBuffer,以及StringBuilder做區別。

  • 以執行速度來區別,StringBuilder>StringBuffer>String
  • String 為字串常量,而StringBuilder和StringBuffer為字串變數,即String物件一旦建立之後該物件是不可更改的,但後兩者的物件是變數,是可以更改的。
  • StringBuilder是執行緒不安全的,StringBuffer是執行緒安全的