用 Python 编写程序,查找文本中两个给定单词的最小距离

pythonserver side programmingprogramming更新于 2025/12/24 17:16:17

假设我们有三个字符串 text、w1 和 w2。文本是一个包含不同单词的句子。我们必须找到文本中 w1 和 w2 任意两次出现之间的最小距离,该距离以它们之间的单词数来衡量。如果文本中不存在 w1 或 w2,则返回 -1。

因此,如果输入为 text = "joy happy power happy joy joy power happy limit" w1 = "power" w2 = "limit",则输出将为 1,因为只有一个单词 "happy"在功率和极限之间。

为了解决这个问题,我们将遵循以下步骤 −

  • index1 := null, index2 := null

  • 距离 := 999999

  • 对于文本中的每个索引 idx 和单词 w,执行

    • 如果 w 与 w1 相同,则

      • 如果 index2 不为空,则

        • 距离 := 距离和 (|idx - index2| - 1) 的最小值

      • index1 := idx

    • 如果 w 与 w2 相同,然后

      • 如果 index1 不为空,则

        • 距离 := 距离和 (|idx - index1| - 1) 的最小值

      • index2 := idx

  • 如果 index1 不为空且 index2 不为空,则

    • 返回距离

  • 返回 -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

相关文章


有用资源