在 Python 中旋转字符串

pythonserver side programmingprogramming更新于 2025/11/2 4:28:17

假设我们有两个字符串,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

相关文章


有用资源