背景:
這也是面試百度過程中的其中一題,題目非常簡單,但是問題的難點不在於解法,而在於優化。
先寫最簡單的解法。
題目:
給定一個字符串,逐個翻轉字符串中的每個單詞。
示例 1:
輸入: "the sky is blue"
輸出: "blue is sky the"
示例 2:
輸入: " hello world! "
輸出: "world! hello"
解釋: 輸入字符串可以在前面或者後面包含多餘的空格,但是反轉後的字符不能包括。
示例 3:
輸入: "a good example"
輸出: "example good a"
解釋: 如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。
說明:
無空格字符構成一個單詞。
輸入字符串可以在前面或者後面包含多餘的空格,但是反轉後的字符不能包括。
如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。
進階:
請選用 C 語言的用戶嘗試使用 O(1) 額外空間複雜度的原地解法。
簡單解法:
class Solution(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
w_list = []
for eve_w in s.split(" "):
if eve_w:
w_list.append(eve_w)
return " ".join(reversed(w_list))
執行結果:
通過
執行用時 :24 ms, 在所有 Python 提交中擊敗了68.79%的用戶
內存消耗 :13.6 MB, 在所有 Python 提交中擊敗了50.00%的用戶