《劍指offer》---左旋轉字符串與右旋轉字符串


本文算法使用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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM