劍指Offer 程式設計題44 翻轉單詞順序列

2021-08-21 13:54:27 字數 1549 閱讀 5887

題目:牛客最近來了乙個新員工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 ...