在 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

更新於: 28-04-2020

465 次檢視

開啟你的 職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.