1. 程式人生 > 其它 >151. 翻轉字串裡的單詞

151. 翻轉字串裡的單詞

技術標籤:Leetcode演算法筆記

151. 翻轉字串裡的單詞

題目描述

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

說明

  1. 無空格字元構成一個 單詞 。 輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。
  2. 如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。

示例 1:

輸入:“the sky is blue”
輸出:“blue is sky the”

思路

方法一雙端佇列+雙指標

方法二split空格分詞,倒敘遍歷放入到新陣列

程式碼

方法一

class Solution {
    public String reverseWords(String s) {
        int left = 0,right = s.length()-1;
        Deque<String> d = new ArrayDeque<String>();
        StringBuilder word = new StringBuilder();
        while(left<=right){
            char c = s.charAt(left);
            if(c != ' '){
                word.append(c);
            }else{
                if(word.length() != 0){
                    d.offerFirst(word.toString());
                    word.setLength(0);
                }
            }
            left++;
        }
    if(word.length() != 0){
        d.offerFirst(word.toString());
    }
        return String.join(" ",d);
    }
}

結果
測試結果
方法二

class Solution {
    public String reverseWords(String s) {
 if(s==null || "".equals(s=s.trim()))
        {return "";}
        
        String[] strings = s.split(" ");
        StringBuilder sb = new StringBuilder();
        for(int i = strings.length - 1; i>=0;i--){
            if(strings[i].length() != 0){
                sb.append(" ").append(strings[i]);
            }
           
        }
         return sb.substring(1);
    }
}

結果
在這裡插入圖片描述