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

파이썬에서 텍스트에서 주어진 두 단어의 최소 거리를 찾는 프로그램

<시간/>

세 개의 문자열 text, w1 및 w2가 있다고 가정합니다. 텍스트는 단어가 다른 문장입니다. 우리는 텍스트에서 w1과 w2의 두 발생 사이의 가장 작은 거리를 찾아야 하며, 거리는 그들 사이의 단어 수로 측정됩니다. w1 또는 w2가 텍스트에 없으면 -1을 반환합니다.

따라서 입력이 text ="joy happy power happy joy joy power happy limit" w1 ="power" w2 ="limit"와 같은 경우 출력은 1이 됩니다. 힘과 한계.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • index1 :=null, index2 :=null

  • 거리 :=999999

  • 텍스트의 각 인덱스 idx 및 단어 w에 대해 수행

    • w가 w1과 같으면

      • index2가 null이 아니면

        • 거리 :=거리의 최소값 및 (|idx - index2| - 1)

      • index1 :=idx

    • w가 w2와 같으면

      • index1이 null이 아니면

        • 거리 :=거리의 최소값 및 (|idx - index1| - 1)

      • index2 :=idx

  • index1이 null이 아니고 index2가 null이 아니면

    • 반환 거리

  • 반환 -1

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

def solve(text, w1, w2):
   index1 = None
   index2 = None
   distance = 2000000
   for idx, word in enumerate(text.split(" ")):
      if word == w1:
         if index2 is not None:
            distance = min(distance, abs(idx - index2) - 1)
         index1 = idx
      if word == w2:
         if index1 is not None:
            distance = min(distance, abs(idx - index1) - 1)
         index2 = idx
   if index1 is not None and index2 is not None:
      return distance
   return -1

text = "joy happy power happy joy joy power happy limit"
w1 = "power"
w2 = "limit"
print(solve(text, w1, w2))

입력

"joy happy power happy joy joy power happy limit", "power", "limit"

출력

1