Giả sử chúng ta có một danh sách các chuỗi chữ thường được gọi là các từ trong đó mỗi từ có cùng độ dài. Chúng tôi phải kiểm tra xem có hai chuỗi chỉ khác nhau về một ký tự hay không.
Vì vậy, nếu đầu vào giống như words =["seed", "pick", "liếm", "root", "live"], thì đầu ra sẽ là True, vì "pick" và "liếm" gần như giống nhau.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- s:=một tập hợp mới
- đối với mỗi từ trong các từ, hãy thực hiện
- đối với mỗi chỉ mục i và từ w trong word, hãy thực hiện
- nếu chuỗi con của từ [từ chỉ mục 0 đến i - 1] nối "*" từ nối [từ chỉ mục i + 1 đến cuối] có trong s, thì
- trả về True
- nếu không,
- chèn (từ [từ chỉ mục 0 đến i-1] nối "*" từ nối [từ chỉ mục i + 1 đến cuối]) vào s
- nếu chuỗi con của từ [từ chỉ mục 0 đến i - 1] nối "*" từ nối [từ chỉ mục i + 1 đến cuối] có trong s, thì
- đối với mỗi chỉ mục i và từ w trong word, hãy thực hiện
- trả về Sai
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(words): s = set() for word in words: for i, w in enumerate(word): if word[:i] + "*" + word[i + 1 :] in s: return True else: s.add(word[:i] + "*" + word[i + 1 :]) return False words = ["seed", "pick", "lick", "root", "live"] print(solve(words))
Đầu vào
["seed", "pick", "lick", "root", "live"]
Đầu ra
True