ให้สตริง p, q และจำนวน r ตรวจสอบว่า p → q ได้โดยขยับตัวอักษรตามเข็มนาฬิกา (a→b→c...→a) รวมไม่เกิน r ครั้ง
ตัวอย่าง: p="abc", q="ccc", r=3 → True (a→c: 2, b→c: 1, รวม 3)
อัลกอริธึม
- ถ้าความยาวต่างกัน หรือ r=0 แต่ p≠q → False
- สะสม shift: diff = ord(q[i]) - ord(p[i]); ถ้าติดลบ +26
- ถ้าสะสมเกิน r → False
การนำไปใช้
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)) # True