Cho hai từ word0, word1 và một văn bản text. Tìm khoảng cách nhỏ nhất (số từ) giữa bất kỳ cặp xuất hiện nào của hai từ. Trả về -1 nếu không có.
Ví dụ: text = "cat dog abcd dog cat cat abcd dog wxyz", word0 = "abcd", word1 = "wxyz" → kết quả 1 (có 1 từ "dog" giữa).
Các bước giải quyết
word_list:= táchtextthành danh sách từans = len(word_list),L = None- Duyệt chỉ số
Rtừ 0 đến độ dài - 1:- Nếu
word_list[R]làword0hoặcword1:- Nếu
L is not Nonevàword_list[R] != word_list[L]:ans = min(ans, R - L - 1)
L = R
- Nếu
- Trả về
-1nếuans == len(word_list)ngược lạians
Ví dụ mã Python
class Solution: def solve(self, text, word0, word1): word_list = text.split() ans = len(word_list) L = None for R in range(len(word_list)): if word_list[R] == word0 or word_list[R] == word1: if L is not None and word_list[R] != word_list[L]: ans = min(ans, R - L - 1) L = R return -1 if ans == len(word_list) else ans ob = Solution() text = "cat dog abcd dog cat cat abcd dog wxyz" word0 = "abcd" word1 = "wxyz" print(ob.solve(text, word0, word1))Đầu vào
"cat dog abcd dog cat cat abcd dog wxyz", "abcd", "wxyz"
Đầu ra
1
- Nếu