Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình kiểm tra một chuỗi có thể được chuyển đổi sang chuỗi khác bằng cách dịch chuyển các ký tự theo chiều kim đồng hồ trong Python

Giả sử chúng ta có hai chuỗi p và q, và cũng có một số r, chúng ta phải kiểm tra xem p có thể chuyển thành q hay không bằng cách dịch chuyển một số ký tự theo chiều kim đồng hồ nhiều nhất là r lần. Vì vậy, làm ví dụ, "c" có thể được chuyển thành "e" bằng cách sử dụng 2 lần dịch chuyển theo chiều kim đồng hồ.

Vì vậy, nếu đầu vào là p ="abc", q ="ccc", r =3, thì đầu ra sẽ là True, vì chúng ta có thể biến "a" thành "c" bằng cách sử dụng 2 lần dịch chuyển theo chiều kim đồng hồ và sau đó chuyển đổi " b "thành" c "bằng cách sử dụng 1 dịch chuyển theo chiều kim đồng hồ, tổng cộng là 3 ca.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • nếu kích thước của a không giống với kích thước của b, thì
    • trả về Sai
  • nếu k giống 0 và a không giống b thì
    • trả về Sai
  • su:=0
  • đối với tôi trong phạm vi từ 0 đến kích thước của a, do
    • v:=ASCII của b [i] - ASCII của a [i]
    • nếu v> =0, thì
      • su:=su + v
    • nếu không,
      • su:=su + v + 26
    • nếu su> k, thì
      • trả về Sai
  • trả về True

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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