Cho hai chuỗi S và T, kiểm tra xem chúng có khoảng cách chỉnh sửa 0 hoặc 1 hay không. Phép chỉnh sửa: xóa, thêm, hoặc thay thế một ký tự.
Ví dụ: S = "hello", T = "hallo" → True (khoảng cách 1).
Quy trình giải quyết
- Nếu chênh lệch độ dài > 1, trả về
False. - Duyệt hai chuỗi với hai con trỏ
i,jvà biến đếmcount. - Khi ký tự khác nhau:
- Nếu
count == 1, trả vềFalse. - Tùy theo độ dài chuỗi, tăng
ihoặcjhoặc cả hai. - Tăng
count.
- Nếu
- Trả về
True.
Ví dụ mã nguồn
class Solution:
def solve(self, S, T):
m, n = len(S), len(T)
i, j = 0, 0
count = 0
if abs(m - n) > 1:
return False
while i < m and j < n:
if S[i] != T[j]:
if count == 1:
return False
if m < n:
j += 1
elif m > n:
i += 1
else:
i += 1
j += 1
count += 1
else:
i += 1
j += 1
return True
ob = Solution()
S = "hello"
T = "hallo"
print(ob.solve(S, T)) # Output: True
Đầu vào
"hello", "hallo"
Đầu ra
True