Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 두 단어 사이의 최소 거리

<시간/>

두 개의 문자열(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
  • 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