세 개의 문자열 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