Giả sử chúng ta có hai chuỗi, A và B. Chúng ta sẽ xoay chuỗi A và kiểm tra xem nó có khớp với B ở bất kỳ vị trí xoay nào không, nếu đúng thì trả về true, ngược lại là false. Ví dụ:nếu A ='abcde' và B ='bcdea' Vì vậy, câu trả lời sẽ là true, vì A có thể được chuyển đổi thành B sau khi xoay nó.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- Khi cả A và B đều trống thì trả về true, khi cả hai có độ dài khác nhau thì trả về false
- A:=nối A sau A
- i:=0 và j:=0
- while i <độ dài của A
- nếu độ dài của A - i + 1 <độ dài của B, thì trả về false
- while i
- tăng i và j lên 1
- if j =length of B thì trả về true
- nếu j không phải là 0, thì hãy giảm i đi 1
- j:=0
- tăng tôi lên 1
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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")) Đầu vào
"abcde" "cdeab"
Đầu ra
True