Giả sử chúng ta có hai chuỗi s và t. Cần kiểm tra xem có thể得到 s bằng cách xoay t 2 vị trí sang trái hoặc sang phải hay không.
Ví dụ, s = "kolkata", t = "takolka", đầu ra True vì xoay "takolka" sang trái 2 lần được "kolkata".
Các bước giải quyết:
- Nếu độ dài s != độ dài t, trả về False.
- right_rot := chuỗi rỗng, left_rot := chuỗi rỗng.
- l := độ dài t.
- left_rot := t[l-2:] + t[0:l-2] (xoay trái 2).
- right_rot := t[2:] + t[0:2] (xoay phải 2).
- Trả về True nếu s == right_rot hoặc s == left_rot, ngược lại False.
Xem ví dụ dưới đây để hiểu rõ hơn:
Ví dụ
def solve(s, t):
if len(s) != len(t):
return False
l = len(t)
left_rot = t[l - 2:] + t[0:l - 2]
right_rot = t[2:] + t[0:2]
return s == right_rot or s == left_rot
s = "kolkata"
t = "takolka"
print(solve(s, t))
Đầu vào
"kolkata", "takolka"
Đầu ra
True