1. 程式人生 > >【Leetcode】反轉字串裡的單詞

【Leetcode】反轉字串裡的單詞

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