在Python中查找文本中给定两个单词的最小距离的程序

在Python中查找文本中给定两个单词的最小距离的程序

假设我们有三个字符串text、w1和w2。text是一个由不同单词组成的句子。我们必须找到w1和w2在text中任意两次出现之间的最小距离,距离以它们之间的单词数来衡量。如果text中不存在w1或w2,则返回-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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程