在 Python 中旋轉字串
假設我們有兩個字串,A 和 B。我們將旋轉字串 A,並檢查其是否在旋轉後的任意位置與 B 匹配,如果匹配,則返回 true,否則返回 false。例如,如果 A = 'abcde',且 B = 'bcdea',則答案為 true,因為 A 在旋轉後可以轉換為 B。
為了解決這個問題,我們將按以下步驟操作 -
- 當 A 和 B 都為空時,返回 true,當兩者的長度不同時,返回 false
- A := 將 A 連線到 A 之後
- i := 0,且 j := 0
- 當 i < A 的長度
- 如果 A 的長度 – i + 1 < B 的長度,則返回 false
- 當 i < A 的長度、j < B 的長度且 A[i] = B[j]
- 使 i 和 j 都增加 1
- 如果 j = B 的長度,則返回 true
- 如果 j 不為 0,則使 i 減少 1
- j := 0
- 使 i 增加 1
示例
讓我們看看以下實現以加深理解 -
class Solution(object):
def rotateString(self, A, B):
if not A and not B:
return True
if len(A) != len(B):
return False
A = A*2
i = 0
j=0
#print(A,B)
while i < len(A):
if len(A)-i+1<len(B):
return False
while i<len(A) and j < len(B) and A[i] == B[j]:
#print("Here!",i,j)
i+=1
j+=1
if j == len(B):
return True
if j:
i-=1
j=0
i+=1
ob1 = Solution()
print(ob1.rotateString("abcde", "cdeab"))輸入
"abcde" "cdeab"
輸出
True
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP