本文算法使用python3實現
1. 問題1
1.1 題目描述:
匯編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環左移K位后的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸出循環左移3位后的結果,即“XYZdefabc”。
時間限制:1s;空間限制:32768K
1.2 思路描述:
大致思路:
(1)先將左邊 $ 3 $ 個字符串進行翻轉:abcXYZdef --> cbaXYZdef
(2)再將右邊剩余字符串進行翻轉:cbaXYZdef --> cbafedZYX
(3)最后將整個字符串進行翻轉: cbafedZYX --> XYZdefabc
1.3 程序代碼:
class Solution:
def LeftRotateString(self, s, n):
if not s :
return ''
res1 = list(reversed(s[:n]))
res2 = list(reversed(s[n:]))
res = res1 + res2
res = list(reversed(res))
return ''.join(res)
2. 問題2
匯編語言中有一種移位指令叫做循環右移(LOR),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環右移K位后的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸出循環右移3位后的結果,即“defabcXYZ”。
時間限制:1s;空間限制:32768K
2.2 思路描述:
大致思路:
(1)先將整個字符串進行翻轉: abcXYZdef--> fedZYXcba
(2)再將左邊 $ 3 $ 個字符串進行翻轉:fedZYXcba --> defZYXcba
(3)再將右邊剩余字符串進行翻轉:defZYXcba--> defabcXYZ
1.3 程序代碼:
class Solution:
def RightRotateString(self, s, n):
if not s :
return ''
res = list(reversed(s))
res1 = list(reversed(res[:n]))
res2 = list(reversed(res[n:]))
res = res1 + res2
return ''.join(res)