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