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
广告