สมมติว่าเรามีสองสตริง 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