Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのテキストで指定された2つの単語の最小距離を見つけるプログラム


3つの文字列text、w1、およびw2があるとします。テキストは異なる単語の文章です。テキスト内のw1とw2の任意の2つの出現の間の最小距離を見つける必要があります。距離は、それらの間の単語数で測定されます。 w1またはw2のいずれかがテキストに含まれていない場合は、-1を返します。

したがって、入力がtext ="joy happy power happy joy joy power happy limit" w1 ="power" w2 ="limit"の場合、間に「happy」という単語が1つしかないため、出力は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

  1. Pythonの二分木で2つのノード間の距離を見つけるプログラム

    二分木が与えられ、二分木の2つのノード間の距離を見つけるように求められたとします。グラフのように2つのノード間のエッジを見つけ、エッジの数またはそれらの間の距離を返します。ツリーのノードは以下のような構造になっています- data : <integer value> right : <pointer to another node of the tree> left : <pointer to another node of the tree> したがって、入力が次のような場合 そして、その間の距離を見つけなければならないノードは2と8です。その場

  2. 2つの文字列から珍しい単語を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの文字列が与えられているので、与えられた文字列から珍しい単語を取得する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # uncommon words def find(A, B):    # count    count = {}    # insert in A    for word in A.split():       count[word] = coun