Computer >> Máy Tính >  >> Lập trình >> Python

Xoay chuỗi trong Python

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