Cho danh sách words các chuỗi cùng độ dài. Kiểm tra có tồn tại hai chuỗi chỉ khác nhau ở đúng một vị trí không.
Ví dụ: words=["seed","pick","lick","root","live"] → True ("pick" và "lick" chỉ khác ở chữ cái đầu).
Giải thuật (Mặt nạ ký tự + Hash set)
- Với mỗi từ, tạo các biến thể bằng cách thay ký tự tại vị trí
ibằng'*' - Nếu biến thể đã có trong set → tìm thấy cặp gần giống
- Ngược lại thêm biến thể vào set
Ví dụ triển khai
def solve(words):
seen = set()
for word in words:
for i, _ in enumerate(word):
masked = word[:i] + "*" + word[i+1:]
if masked in seen:
return True
seen.add(masked)
return False
print(solve(["seed", "pick", "lick", "root", "live"]))
Đầu vào
["seed", "pick", "lick", "root", "live"]
Đầu ra
True