Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หมุนสตริงใน Python


สมมติว่าเรามีสองสตริง A และ B เราจะหมุนสตริง A และตรวจสอบว่าตรงกับ B ที่ตำแหน่งใดของการหมุนหรือไม่ ถ้าใช่ ให้คืนค่าจริงหรือเท็จ ตัวอย่างเช่น ถ้า A ='abcde' และ B ='bcdea' คำตอบจะเป็นจริง เนื่องจาก A สามารถแปลงเป็น B หลังจากหมุนได้

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • เมื่อทั้ง A และ B ว่างเปล่า ให้คืนค่า จริง เมื่อทั้งคู่มีความยาวต่างกัน ให้คืนค่าเท็จ
  • A :=เชื่อม A หลัง A
  • i :=0 และ j :=0
  • ในขณะที่ฉัน <ความยาวของ A
    • ถ้าความยาวของ A – i + 1 <ความยาวของ B ให้คืนค่าเท็จ
    • ในขณะที่ i <ความยาวของ A และ j <ความยาวของ B และ A[i] =B[j]
      • เพิ่ม i และ j ขึ้น 1
    • ถ้า j =ความยาวของ B คืนค่าเป็นจริง
    • ถ้า j ไม่ใช่ 0 ให้ลด i ลง 1
    • j :=0
    • เพิ่ม i ขึ้น 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