Giả sử chúng ta có hai chuỗi, word0 và word1 và một văn bản. Chúng ta phải tìm khoảng cách nhỏ nhất giữa hai lần xuất hiện bất kỳ của word0 và word1 trong văn bản đã cho. Đây là khoảng cách được đo bằng số từ. Nếu chúng không có trong văn bản thì trả về -1.
Vì vậy, nếu đầu vào là text ="cat dog abcd dog cat cat abcd dog wxyz", word0 ="abcd", word1 ="wxyz", thì đầu ra sẽ là 1, vì có một từ "dog" giữa " abcd "và" wxyz "
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- word_list:=danh sách các từ trong văn bản
- ans:=kích thước của word_list
- L:=null
- đối với R trong phạm vi 0 đến kích thước của word_list - 1, thực hiện
- nếu word_list [R] là word0 hoặc word_list [R] là word1, thì
- nếu L không phải là null và word_list [R] không phải là word_list [L], thì
- ans:=tối thiểu là ans và R - L - 1
- L:=R
- nếu L không phải là null và word_list [R] không phải là word_list [L], thì
- nếu word_list [R] là word0 hoặc word_list [R] là word1, thì
- trả về -1 nếu ans giống với kích thước của word_list, ngược lại là ans
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, 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