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

โปรแกรมตรวจสอบการแปลงสตริงด้วยการขยับตัวอักษรตามเข็มนาฬิกาใน Python

ให้สตริง 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