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

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


สมมติว่าเรามีสองสตริง p และ q และยังมีตัวเลข r อีกด้วย เราต้องตรวจสอบว่า p สามารถแปลงเป็น q ได้หรือไม่ โดยการเลื่อนอักขระบางตัวตามเข็มนาฬิกาไม่เกิน r ครั้ง ตัวอย่างเช่น "c" เปลี่ยนเป็น "e" ได้โดยใช้ 2 กะตามเข็มนาฬิกา

ดังนั้น หากอินพุตเป็น p ="abc", q ="ccc", r =3 เอาต์พุตจะเป็น True เนื่องจากเราสามารถแปลง "a" เป็น "c" โดยใช้ 2 กะตามเข็มนาฬิกาแล้วแปลง " b" เป็น "c" โดยใช้ 1 กะตามเข็มนาฬิกา รวมเป็น 3 กะ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้าขนาดของ a ไม่เหมือนกับขนาดของ b แล้ว
    • คืนค่าเท็จ
  • ถ้า k เท่ากับ 0 และ a ไม่เหมือนกับ b แล้ว
    • คืนค่าเท็จ
  • su:=0
  • สำหรับฉันในช่วง 0 ถึงขนาดของ a ทำ
    • v :=ASCII ของ b[i] - ASCII ของ a[i]
    • ถ้า v>=0 แล้ว
      • su :=su + v
    • มิฉะนั้น
      • su :=su + v + 26
    • ถ้า su> k แล้ว
      • คืนค่าเท็จ
  • คืนค่า True

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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))

อินพุต

"abc", "ccc", 3

ผลลัพธ์

True