두 개의 문자열(word0, word1)과 텍스트가 있다고 가정합니다. 주어진 텍스트에서 word0과 word1의 두 발생 사이의 최소 거리를 찾아야 합니다. 여기서 거리는 단어 수로 측정됩니다. 텍스트에 없으면 -1을 반환합니다.
따라서 입력이 text ="cat dog abcd dog cat cat abcd dog wxyz", word0 ="abcd", word1 ="wxyz"와 같은 경우 "dog"이라는 단어가 하나 있기 때문에 출력은 1이 됩니다. abcd" 및 "wxyz"
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- word_list :=텍스트의 단어 목록
- ans :=word_list의 크기
- L :=null
- 0에서 word_list의 크기 - 1 사이의 R에 대해
- word_list[R]이 word0이거나 word_list[R]이 word1이면
- L이 null이 아니고 word_list[R]이 word_list[L]이 아니면
- ans :=ans 및 R - L - 1의 최소값
- L :=R
- L이 null이 아니고 word_list[R]이 word_list[L]이 아니면
- word_list[R]이 word0이거나 word_list[R]이 word1이면
- as가 word_list의 크기와 같으면 -1을 반환하고 그렇지 않으면
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
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))
입력
"cat dog abcd dog cat cat abcd dog wxyz", "abcd", "wxyz"
출력
1