Python程式:查詢文字中兩個給定單詞的最小距離
假設我們有三個字串:text、w1和w2。text是一個包含不同單詞的句子。我們需要找到w1和w2在text中任意兩次出現之間的最小距離,距離以兩者之間的單詞數來衡量。如果w1或w2不存在於text中,則返回-1。
例如,如果輸入為:text = "joy happy power happy joy joy power happy limit",w1 = "power",w2 = "limit",則輸出為1,因為power和limit之間只有一個單詞"happy"。
為了解決這個問題,我們將遵循以下步驟:
index1 := null,index2 := null
distance := 999999
對於text中的每個索引idx和單詞w:
如果w與w1相同,則:
如果index2不為null,則:
distance := distance和(|idx - index2| - 1)的最小值
index1 := idx
如果w與w2相同,則:
如果index1不為null,則:
distance := distance和(|idx - index1| - 1)的最小值
index2 := idx
如果index1不為null且index2不為null,則:
返回distance
返回-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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP