2021-01-04 | 151. 翻轉字串裡的單詞
1. 題目描述
給定一個字串,逐個翻轉字串中的每個單詞。
說明:
- 無空格字元構成一個 單詞 。
- 輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。
- 如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。
示例 1:
輸入:"the sky is blue"
輸出:"blue is sky the"
示例 2:
輸入:" hello world! "
輸出:"world! hello"
解釋:輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。
示例 3:
輸入:"a good example"
輸出:"example good a"
解釋:如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。
示例 4:
輸入:s = " Bob Loves Alice "
輸出:"Alice Loves Bob"
示例 5:
輸入:s = "Alice does not even like bob"
輸出:"bob like even not does Alice"
提示:
- 1 <= s.length <= 104
- s 包含英文大小寫字母、數字和空格 ’ ’
- s 中 至少存在一個 單詞
進階:
- 請嘗試使用 O(1) 額外空間複雜度的原地解法。
2. 解題思路
(1)使用JavaScript的API
對於這道題,我們可以直接使用JavaScript的API來完成這道題目:
- 使用
split()
來將字串中每個單詞分隔,放在一個陣列中 - 使用
filter()
來將多餘的空格過濾掉 - 使用
reverse()
來反轉陣列元素 - 使用
join()
將陣列元素拼接為字串
複雜度分析
-
時間複雜度:O(N),其中 N 為輸入字串的長度。
-
空間複雜度:O(N),用來儲存字串分割之後的結果。
(2)陣列操作
除了上述的方法之外,我們還可以用最普通的方法處理這個字串:
- 首先將字串首尾UI的空格去除掉
- 遍歷字串,將字串中單詞逐個遍歷出來,放在一個陣列中
- 將陣列中的元素合併成一個字串
複雜度分析
-
時間複雜度:O(N),其中 N 為輸入字串的長度。
-
空間複雜度:O(N),其中N為遍歷期間儲存的陣列的長度。
3. 程式碼實現
(1)使用JavaScript的API
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
return s.split(' ').filter(item => item).reverse().join(' ')
};
(2)單詞逐個處理
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
let res = [], temp = [], cur = 0, str = s.trim(), len = str.length
while(cur < len){
while(cur < len && str.charAt(cur) !== ' '){
temp.push(str.charAt(cur))
cur++
}
if(temp.length){
res.unshift(temp.join(''))
temp = []
}
while(cur < len && str.charAt(cur) === ' '){
cur++
}
}
return res.join(' ')
};
4. 提交結果
(1)使用JavaScript的API
(2)單詞逐個處理
相關文章
- 151.翻轉字串裡的單詞 卡碼網:55.右旋轉字串字串
- 微軟面試題: LeetCode 151. 翻轉字串裡的單詞 出現次數:6微軟面試題LeetCode字串
- LeetCode-151-翻轉字串裡的單詞LeetCode字串
- 程式碼隨想錄第9天|●151.翻轉字串裡的單詞(有題目未解決)字串
- 程式碼隨想錄演算法訓練營第八天| 151.翻轉字串裡的單詞演算法字串
- 程式碼隨想錄演算法訓練營day09|151.翻轉字串裡的單詞,卡碼網:55.右旋轉字串,28.實現 strStr(),459.重複的子字串演算法字串
- 程式碼隨想錄演算法訓練營,9月5日 | 151.翻轉字串裡的單詞,卡碼網:55.右旋轉字串,28. 實現 strStr(),459.重複的子字串演算法字串
- 程式碼隨想錄演算法訓練營第8天 | 字串 344.反轉字串 541. 反轉字串II 卡碼網:54.替換數字 151.翻轉字串裡的單詞 卡碼網:55.右旋轉字串演算法字串
- 【LeetCode字串#03】圖解翻轉字串中的單詞,以及對於for使用的說明LeetCode字串圖解
- 第五章 字串專題 ---------------- 5.8 題解:將字串中按單詞翻轉字串
- 08天【程式碼隨想錄演算法訓練營34期】第四章 字串part01(● 344.反轉字串 ● 541. 反轉字串II ● 卡碼網:54.替換數字 ● 151.翻轉字串裡的單詞 ● 卡碼網:55.右旋轉字串)演算法字串
- JZ-044-翻轉單詞順序列
- 力扣之反轉字串中的單詞 III力扣字串
- 每日一練(31):翻轉單詞順序
- 一串字串的翻轉字串
- 談談字串翻轉字串
- python如何翻轉字串?Python字串
- 程式碼隨想錄 day8|| 151 翻轉單詞 28 字串匹配 459 重複子串字串匹配
- LeetCode每日一題:反轉字串中的單詞 III(No.557)LeetCode每日一題字串
- Ubuntu安裝劃詞翻譯軟體Goldendict 單詞翻譯 句子翻譯UbuntuGo
- 力扣 - 劍指 Offer 58 - I. 翻轉單詞順序力扣
- LeetCode-434-字串中的單詞數LeetCode字串
- 演算法小記·字串翻轉演算法字串
- 字串最後一個單詞的長度字串
- 劍指offer—58.翻轉單詞順序列—分析及程式碼(Java)Java
- 「翻轉字串」python之leetcode刷題|004字串PythonLeetCode
- 11-09字串中的單詞數字串
- 輸入一個英文句子,翻轉句子中的單詞,要求單詞內的字元順序不變。 如:I am a student. 轉換成 student. a am I字元
- 第五章 字串專題 ---------------- 5.2 題解:巧妙翻轉字串字串
- 寫一個方法,將字串中的單詞倒轉後輸出,如:`my love` -> `ym evol`字串
- PHP 實現字串翻轉(包含中文漢字)的實現PHP字串
- go練手:簡單的單詞格式轉換工具Go
- Java 英語單詞本 (基於有道翻譯)Java
- 有道雲詞典--翻譯/螢幕取詞翻譯
- 歌詞翻譯
- 【翻譯】影像到Base64字串轉換字串
- 第五章 字串專題 ---------------- 5.7 題解:旋轉詞字串
- 2021-01-04