151. 翻轉字串裡的單詞
阿新 • • 發佈:2021-02-02
技術標籤:Leetcode演算法筆記
151. 翻轉字串裡的單詞
題目描述
給定一個字串,逐個翻轉字串中的每個單詞。
說明:
- 無空格字元構成一個 單詞 。 輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。
- 如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。
示例 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); } }
結果