【Leetcode】反轉字串裡的單詞
阿新 • • 發佈:2018-12-23
Leetcode
題目要求
給定一個字串,逐個翻轉字串中的每個單詞。
- 示例:
- 輸入:“the sky is blue”
- 輸出:“blue is sky the”
- 說明:無空格字元構成一個單詞
輸入字串可以在前面或後面包含多餘的空格,但是翻轉後的字元不能包括。
如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。
核心思想
將字串拆分,然後從後往前遍歷。
這裡有一個坑,就是如果字串是" 1"的情況,會拆分成["" , 1],即一個空字串和1個字元,這時,必須刪去空字串,進行遍歷。
完整程式碼如下
/**
* 給定一個字串,逐個翻轉字串中的每個單詞。
* 示例:
* 輸入:“the sky is blue”
* 輸出:“blue is sky the”
* 說明:無空格字元構成一個單詞
* 輸入字串可以在前面或後面包含多餘的空格,但是翻轉後的字元不能包括。
* 如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。
* @author mac
*
*/
public class Solution {
public String reverseWords(String s) {
if(s == null || s.length() == 0) {
return "";
}
String newStr = "";
String[] strArray = s.split(" ");
for(int i = strArray.length - 1; i >= 0; i--) {
if(strArray[i].length() != 0){
if (!strArray[i].equals(" ")) {
if(newStr.length() > 0) {
newStr += " ";
}
newStr += strArray[i];
}
}
}
return newStr;
}
public static void main(String[ ] args) {
Solution sl = new Solution();
String str = " 1";
String str2 = "the sky is blue";
System.out.println(sl.reverseWords(str));
System.out.println(sl.reverseWords(str2));
}
}