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

Pythonで2つの文字列間の編集距離が1つであるかどうかを確認します


2つの文字列sとtがあるとします。 sとtの間の編集距離が正確に1であるかどうかを確認する必要があります。ここで、2つの文字列間の編集は、これら3つの文字列のいずれかを意味します-

  • 文字を挿入
  • 文字を削除する
  • 文字を置き換える

したがって、入力がs ="hello" t ="heillo"のような場合、tを取得するにはsに1文字を挿入する必要があるため、出力はTrueになります。

これを解決するには、次の手順に従います-

  • if|sのサイズ-tのサイズ|> 1、次に
    • falseを返す
  • edit_dist_cnt:=0、i:=0、j:=0
  • i
  • s[i]がt[j]と同じでない場合、
    • edit_dist_cntが1と同じ場合、
      • falseを返す
    • sのサイズ>tのサイズの場合、
      • i:=i + 1
    • それ以外の場合、sのサイズ
    • j:=j + 1
  • それ以外の場合、
    • i:=i + 1、j:=j + 1
  • edit_dist_cnt:=edit_dist_cnt + 1
  • それ以外の場合、
    • i:=i + 1、j:=j + 1
  • i
  • edit_dist_cnt:=edit_dist_cnt + 1
  • edit_dist_cntが1と同じ場合はtrueを返し、それ以外の場合はfalseを返します
  • 理解を深めるために、次の実装を見てみましょう-

    def solve(s, t):
       if abs(len(s) - len(t)) > 1:
          return false
       edit_dist_cnt = 0
       i = 0
       j = 0
       while i < len(s) and j < len(t):
          if s[i] != t[j]:
             if edit_dist_cnt == 1:
                return false
             if len(s) > len(t):
                i += 1
             elif len(s) < len(t):
                j += 1
             else:
                i += 1
                j += 1
             edit_dist_cnt +=1
          else:
             i += 1
             j += 1
       if i < len(s) or j < len(t):
          edit_dist_cnt += 1
       return edit_dist_cnt == 1
    s = "hello"
    t = "heillo"
    print(solve(s, t))

    入力

    "hello", "heillo"

    出力

    True

    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つのリストに少なくとも1つの共通要素があるかどうかをチェックするPythonプログラム

      この問題では、2つのユーザー入力リストを使用します。私たちの仕事は、共通の要素があるかどうかを確認することです。非常に単純なトラバース手法を使用して、リストの両方をトラバースし、最初のリストと2番目のリストのすべての要素をチェックします。 例 Input : A = [10, 20, 30, 50] B = [90, 80, 30, 10, 3] Output : FOUND Input : A = [10, 20, 30, 50] B = [100,200,300,500] Output : NOT FOUND アルゴリズム commonelement(