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

ตรวจสอบว่าสามารถรับสตริงได้หรือไม่โดยหมุนสตริงอีก 2 ตำแหน่งใน Python


สมมติว่าเรามีสองสตริง s และ t เราต้องตรวจสอบว่าได้ s หรือไม่ โดยหมุน t สองตำแหน่งไปทางซ้ายหรือขวา

ดังนั้น หากอินพุตเป็น s ="kolkata" t ="takolka" ผลลัพธ์จะเป็น True เนื่องจากเราสามารถหมุน "takolka" ไปทางซ้ายสองครั้งเพื่อให้ได้ "kolkata"

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

  • ถ้าขนาดของ s ไม่เหมือนกับขนาดของ t แล้ว
    • คืนค่าเท็จ
  • right_rot :=สตริงว่าง
  • left_rot :=สตริงว่าง
  • l :=ขนาดของเสื้อ
  • left_rot :=left_rot concatenate t[ from index l - 2 to end] เชื่อม t[จากดัชนี 0 ถึง l - 3]
  • right_rot :=right_rot ต่อ t[จากดัชนี 2 ถึงปลาย] ต่อ t[จากดัชนี 0 ถึง 1]
  • คืนค่า จริง เมื่อ (s เหมือนกับ right_rot หรือ s เหมือนกับ left_rot) มิฉะนั้น จะเป็นเท็จ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

def solve(s, t):
   if (len(s) != len(t)):
      return False
   right_rot = ""
   left_rot = ""
   l = len(t)
   left_rot = (left_rot + t[l - 2:] + t[0: l - 2])
   right_rot = right_rot + t[2:] + t[0:2]
   return (s == right_rot or s == left_rot)
s = "kolkata"
t = "takolka"
print(solve(s, t))

อินพุต

"kolkata", "takolka"

ผลลัพธ์

True