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