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

Pythonで2つの文が類似しているかどうかを確認するプログラム


2つの文sとtがあるとします。それらが類似しているかどうかを確認する必要があります。ここの文は英語の文字だけです。 2つの文が等しくなるように、これらの与えられた文の1つに任意の文(おそらく空)を追加できる場合、2つの文は類似していると言われます。

したがって、入力がs ="we live at city Kolkata" t ="city Kolkata"の場合、「we live in」という文を追加することで、tからsを取得できるため、出力はTrueになります。

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

  • s1:=s内の単語のリスト

  • s2:=t内の単語のリスト

  • s1のサイズ>s2のサイズの場合

    • s1とs2を交換する

  • s1が空でない間、実行します

    • s2[0]がs1[0]と同じ場合、

      • s2から最初の単語を削除する

      • s1から最初の単語を削除する

    • それ以外の場合、s2の最後の単語がs1の最後の単語と同じである場合、

      • s2から最後の単語を削除する

      • s1から最後の単語を削除する

    • それ以外の場合

      • falseを返す

  • trueを返す

理解を深めるために、次の実装を見てみましょう-

def solve(s, t):
   s1 = s.split()
   s2 = t.split()
   if len(s1) > len(s2):
      s1,s2 = s2,s1
   while(s1):
      if(s2[0]==s1[0]):
         s2.pop(0)
         s1.pop(0)
      elif(s2[-1]==s1[-1]):
         s2.pop()
         s1.pop()
      else:
         return(False)
   return(True)

s = "we live at city Kolkata"
t = "city Kolkata"
print(solve(s, t))

入力

"we live at city Kolkata", "city Kolkata"

出力

True

  1. Pythonでノードを交換することで2つのツリーを形成できるかどうかを確認するプログラム

    2つのツリーがあるとすると、ノードの左右のサブツリーを何度でも交換して、最初のツリーを2番目のツリーに変換できるかどうかを確認する必要があります。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- que1:=最初はroot0のキュー que2:=最初はroot1のキュー que1とque2は空ではありませんが、実行してください temp1:=新しいリスト、temp2:=新しいリスト values1:=新しいリスト、values2:=新しいリスト que1とque2に含まれる要素の数が

  2. 与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム

    無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります