在 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