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

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


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

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

ในการแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:

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

ลองดูการนำไปใช้ดังต่อไปนี้เพื่อเข้าใจได้ดียิ่งขึ้น:

ตัวอย่าง

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