LeetCode013 : 反轉字串中的單詞 III
一、寫在前面
LeetCode 第十二題反轉字串傳輸門:LeetCode012 : 反轉字串
今天給大家分享的是LeetCode 陣列與字串 第十三題:反轉字串中的單詞 III,為面試而生,期待你的加入。
“Use the utility in the API is recommended in the project. But if you use it in an interview, you will definitely fail .”
二、今日題目
給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。
示例:
輸入: "Let's take LeetCode contest"
輸出: "s'teL ekat edoCteeL tsetnoc"
注意:
在字串中,每個單詞由單個空格分隔,並且字串中不會有任何額外的空格。
三、 分析
這個題目,看到第一眼,感覺有點難,我一看到題目,還以為是一個字串裡有英文單詞,只用識別英文單詞,然後把英文單詞逆轉就好,後來仔細一看,是一段只由英文單詞和空格組成的字串,這樣的話,就簡單了很多,具體思路如下圖所述:
四、解題
1.快捷的方法:
時間複雜度:O(n)
畢竟還是得把每個單詞都遍歷一遍~
class Solution(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
# 根據空格,把字串分隔開
r_list = s.split(" ")
# 把列表每個單詞字串逆轉
for i in range(len(r_list)):
r_list[i] = r_list[i][::-1]
# 用 “ ” 連線列表的每個單詞
result_s = " ".join(r_list)
return result_s
(1)切片/join操作,前一篇Python小知識 | 這些技能你不會?(一)有較詳細介紹。
(2)split函式
Python split((str, num) 通過指定分隔符對字串進行切片,如果引數 num 有指定值,則僅分隔 num 個子字串。
引數介紹:
str -- 分隔符,預設為所有的空字元,包括空格、換行(\n)、製表符(\t)等。
num -- 分割次數。
(3)提交結果
測試資料:30組
執行時間:32ms
擊敗人百分比:94.56%
2.自己動手,豐衣食足?
遍歷,分組都自己動手實現
時間複雜度:O(n)
class Solution1(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
# 根據空格,把字串分隔開
s = s + ' '
r_list = []
word = ''
flag = 0
for i in s:
if i != " ":
word = word + i
flag = 1
else:
if flag == 1:
r_list.append(word)
word = ''
flag = 0
# 把列表每個單詞字串逆轉
for i in range(len(r_list)):
r_list[i] = self.reverseString(r_list[i])
# 用 “ ” 連線列表的每個單詞
result_s = ''
for i in range(len(r_list)):
if i == len(r_list)-1:
result_s = result_s + r_list[i]
break
result_s = result_s + r_list[i] + " "
return result_s
# leetcode12中自己實現字串逆轉
def reverseString(self, s):
"""
:type s: str
:rtype: str
"""
result = list(s)
for i in range(len(result)//2):
temp = result[len(result)-i-1]
result[len(result)-i-1] = result[i]
result[i] = temp
return ''.join(result)
- 提交結果
測試資料:30組
執行時間:204ms
擊敗人百分比:2.89%
雖然beat的人不多,但我有想法,我驕傲啊~
感覺很酷,感覺很努力,現實很殘酷,有沒有這種感覺?
五、疑惑
昨天立冬,天氣是真的變冷了,大家要記得多穿衣服,別感冒哦~
不要忘記學習,不要忘記學習,不要忘記學習。
最近廣告[互推和廣告]有點多,乾貨比較少,希望大家諒解,說幾點感悟:
第一,互推,為了公眾號能越做越好,必不可少的,個人的能力有限,不能每一篇文章都是爆文,所以見諒,而且我一般互推也都是python公眾號,都是做公眾號認識的朋友,所以才誠心推薦給大家的;
第二,接商業廣告,學生黨,花時間運營公眾號不簡單,做一篇推文可能花的5,6個小時,剛開始花兩三天也是常有的事,生活不易,有合適的,不錯的廣告商,每一個廣告商我都是深入瞭解了的,至少沒有騙錢圈錢的機構,這樣賺點生活費,我覺得不為過吧;
第三,關於文末雞腿,點贊,轉發,留言的事情,的確少的可憐,所以希望大家以後點開推文多幫幫忙,點一下,可能這篇推文你學到的很少,說不定下篇就能學很多了呢?
第四,交流群,目前主要我一個人管理,還有一個研二的學長幫忙看一個群,忙不過來,回答大家問題慢了,也不要見怪,想加群的加我微信:zs820553471。
希望多多支援,在公眾號上,要是說100%的心,我只能給大家50%,這50%無私分享學習,交流,剩下的50%,怪我,被利益和生活燻黑了。
六、結語
加我微信:zs820553471,備註:leetcode,加入專門的leetcode刷題交流群。
堅持 and 努力 : 終有所獲。
歡迎大家關注微信公眾號:極簡XksA,獲取Python/Java/前端等學習資源!