刷題 左旋轉字串 翻轉單詞順序列

2021-08-20 11:59:29 字數 1944 閱讀 5488

1.組合語言中有一種移位指令叫做迴圈左移(rol),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s=」abcxyzdef」,要求輸出迴圈左移3位後的結果,即「xyzdefabc」。是不是很簡單?ok,搞定它!

其實python一句話就搞定了

# -*- coding:utf-8 -*-

class

solution:

defleftrotatestring

(self, s, n):

# write code here

return s[n:] + s[:n]

emmm,這樣太草率了…

正經思路:把字串分成兩個部分,先分別翻轉這兩個部分,再翻轉整個字串。

# -*- coding:utf-8 -*-

class

solution:

defreverse

(self, s):

i = 0

j = len(s) - 1

while i < j:

temp = s[i]

s[i] = s[j]

s[j] = temp

i += 1

j -= 1

return s

defleftrotatestring

(self, s, n):

# write code here

s = list(s)

s = self.reverse(s[:n]) + self.reverse(s[n:])

return

''.join(self.reverse(s))

python裡字串不能被直接修改,所以感覺寫得好詭異。

2.牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?

同樣也可以用一句話實現

# -*- coding:utf-8 -*-

class

solution:

defreversesentence

(self, s):

# write code here

return

' '.join(s.split(' ')[::-1])

正經思路:先翻轉句子中所有的字元,然後再翻轉每個單詞。

# -*- coding:utf-8 -*-

class

solution:

defreverse

(self, s):

i = 0

j = len(s) - 1

while i < j:

temp = s[i]

s[i] = s[j]

s[j] = temp

i += 1

j -= 1

return s

defreversesentence

(self, s):

# write code here

s = list(s)

s = self.reverse(s)

k = 0

for m in range(len(s)):

if s[m] == ' ':

s[k:m] = self.reverse(s[k:m])

k = m + 1

s[k:] = self.reverse(s[k:])

return

''.join(s)

詭異的感覺依舊存在。

劍指Offer 翻轉單詞順序列 左旋轉字串

牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....

翻轉單詞順序 VS 左旋轉字串

題目1 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變,標點符號和普通字母一樣處理。例如輸入 i am a student.則輸出 student.a am i 方法 第一步翻轉句子中所有的字元,第二步翻轉每個單詞中字元的順序。void reverse char pbegin,cha...

翻轉單詞順序 VS 左旋轉字串

全部內容來自 劍指offer 題目一 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字元一樣處理。例如輸入字串 i am a student.則輸出 student.a am i answer void reverse char pbegin,char p...