在 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.