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...