【leetcode】反轉字串中的單詞III
阿新 • • 發佈:2018-12-23
題目要求
給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序
- 示例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是執行緒安全的