在Python中旋转字符串
假设我们有两个字符串,A和B。我们将旋转字符串A,并在旋转的任何位置检查它是否与B匹配,如果是,则返回true,否则返回false。例如,如果A='abcde',而B='bcdea',答案将是正确的,因为旋转A后可以将A转换为B。
为了解决这个问题,我们将遵循以下步骤-
当A和B都为空时,则返回true;而当两者长度不同时,则返回false
A:=在A之后连接A
i:=0,j:=0
而我<A的长度
将i和j加1
如果A的长度–i+1<B的长度,则返回false
而i<A的长度和j<B的长度,A[i]=B[j]
如果j=B的长度,则返回true
如果j不为0,则将i减1
j:=0
使我增加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