Cho hai chuỗi p, q và số r. Kiểm tra xem p có thể biến thành q bằng cách dịch chuyển một số ký tự theo chiều kim đồng hồ tối đa r lần. Ví dụ: 'c' -> 'e' cần 2 lần dịch.
Ví dụ, p = "abc", q = "ccc", r = 3, đầu ra True (a->c:2, b->c:1, tổng 3).
Các bước giải quyết:
- Nếu độ dài khác nhau, trả về
False. - Nếu
k == 0vàa != b, trả vềFalse. su := 0.- Duyệt
itừ 0 đến độ dài:v = ord(b[i]) - ord(a[i]).- Nếu
v >= 0,su += v; ngược lạisu += v + 26. - Nếu
su > k, trả vềFalse.
- Trả về
True.
Ví dụ minh họa
class Solution:
def solve(self, a, b, k):
if len(a) != len(b):
return False
if k == 0 and a != b:
return False
su = 0
for i in range(len(a)):
v = ord(b[i]) - ord(a[i])
if v >= 0:
su += v
else:
su += v + 26
if su > k:
return False
return True
ob = Solution()
print(ob.solve("abc", "ccc", 3))
Đầu vào
"abc", "ccc", 3
Đầu ra
True