演算法試題 翻轉字串

2022-06-27 23:12:13 字數 2106 閱讀 6649

題目:組合語言中有一種移位指令叫做迴圈左移(rol),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。

對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s=」abcxyzdef」,要求輸出迴圈左移3位後

的結果,即「xyzdefabc」。是不是很簡單?ok,搞定它

切片 + 拼接

對原字串進行擴充兩倍,在這個基礎上直接從要反轉的地方取就可以,相當於前n個字串翻轉了,思想非常好

首先需要寫乙個reverse函式,把任何輸入的字串完全翻轉。然後根據題目中給出的左旋轉字串的個數n,

用全字串長度length減去旋轉字串個數n,求得對於新的字串應該在哪一位進行旋轉,然後分別旋轉前[:length-n]子

串和[length-n:]子串,重新拼接兩個子串即可。

舉例: n=2

1 2 3 4 5

5 4 3 2 1 整體反轉

3 4 5 1 2 對於5-2=3部分翻轉,對於最後2 1再部分翻轉

'''

思路一:

29ms

5760k

'''#

-*- coding:utf-8 -*-

class

solution:

defleftrotatestring(self, s, n):

#write code here

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

'''思路二:對原字串進行擴充兩倍,在這個基礎上直接從要反轉的地方取就可以,相當於前n個字串翻轉了,思想非常好

28ms

5760k

'''#

-*- coding:utf-8 -*-

class

solution:

defleftrotatestring(self, s, n):

#write code here

ifnot

s:

return

''length =len(s)

s +=s

return s[n:length +n]

'''盡量避免使用內建函式

思路三:首先需要寫乙個reverse函式,把任何輸入的字串完全翻轉。然後根據題目中給出的左旋轉字串的個數n,

用全字串長度length減去旋轉字串個數n,求得對於新的字串應該在哪一位進行旋轉,然後分別旋轉前[:length-n]子

串和[length-n:]子串,重新拼接兩個子串即可。

舉例: n=2

1 2 3 4 5

5 4 3 2 1 整體反轉

3 4 5 1 2 對於5-2=3部分翻轉,對於最後2 1再部分翻轉

28ms

5760k

'''#

-*- coding:utf-8 -*-

class

solution:

defleftrotatestring(self, s, n):

#write code here

ifnot s or len(s) < n or n <0:

return

''s =list(s)

length =len(s)

s =self.reverse(s)

s1 = self.reverse(s[:length -n])

s2 = self.reverse(s[length -n:])

result = ''.join(s1) + ''

.join(s2)

return

result

defreverse(self, s):

start =0

end = len(s) - 1

while start s[start], s[end] =s[end], s[start]

start += 1end -= 1

return s

s = "

shdkfhkxm

"def

func(s, k):

return s[k:] +s[:k]

print(func(s, 3)) #

kfhkxmshd

演算法 字串問題 翻轉字串

翻轉字串 給定乙個字元型別的陣列chas,請在單詞間作逆序調整。只要做到單詞順序逆序即可。例如,如果看成字串 dog loves pig 則調整為 pig loves dog 過程 先整體逆序,在區域性單詞逆序 public static void rotateword char chas reve...

翻轉字串 翻轉單詞字串

將一句話裡面的單詞進行倒置,標點符號不倒換。比如一句話 i come from china.倒換後變成 china.from come i 解析 解決該問題可以分為兩步,第一步全盤置換為 anihc morf emoc i 第二部對每個單詞進行逐步翻轉,如果不是空格,則開始翻轉單詞。具體 如下 in...

字串翻轉

遞迴入門 字串翻 將字串 test 翻轉,變為 tset 解法 遞迴 此題的遞迴跟判斷回文字串的解法原理一樣。只是不是比較兩端字元,而是直接交換。include using namespace std int str turn int low,int high,char p,int length t...