題目:牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?
# -*- coding:utf-8 -*-
class solution:
def reversesentence(self, s):
if not s:
return ''
''' 如果s是'abc' 那麼list(s)就是['a','b','c'] '''
strlist = list(s)
strlist = self.reverse(strlist)
pbegin = 0
pend = 0
resultstr = ''
listtemp =
while pend < len(s):
# 如果pend指標指到最後乙個字元, 跳出迴圈
if pend == len(s)-1:
break
# 如果begin指標為空 就直接加入 不翻轉
if strlist[pbegin] == ' ':
pbegin += 1
pend += 1
elif strlist[pend] == ' ':
# 將尾指標賦值給頭指標 下次遍歷的時候就會自動填乙個" " 然後頭尾指標都+1
pbegin = pend
else:
pend += 1
# 此時的listtemp是[['i'], ' ', ['a', 'm'], ' ', ['a'], ' ', ['s', 't', 'u', 'd', 'e', 'n', 't', '.']]
# 所以要將每個列表中的元素join成字串
for i in listtemp:
resultstr += ''.join(i)
return resultstr
# 翻轉字元list
def reverse(self, alist):
if alist == none or len(alist) <= 0:
return ''
startindex = 0
endindex = len(alist) - 1
while startindex < endindex:
alist[startindex], alist[endindex] = alist[endindex], alist[startindex]
startindex += 1
endindex -= 1
return alist
簡單做法(切片):
m[5:15:3]#第6-15個數中,每3個數取乙個
m[::-1]#所有數中,逆序取乙個
m[::10]#所有的數中,每10個數取乙個
劍指offer第44題 翻轉單詞順序列
原始碼牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a stude...
劍指Offer 翻轉單鏈表
定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。樣例輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null有兩種方法。一種直觀的方法是使用棧,利用棧先進後出的特性。將節點的值全部壓入棧,出棧的時候需要建立新的節點,連成鍊錶。這裡注意不要直接把鍊錶中的各個節點丟...
《劍指 Offer》 44 翻轉單詞順序
字串 牛客最近來了乙個新員工 fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事 cat 對 fish 寫的內容頗感興趣,有一天他向 fish 借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am ...