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