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

Pythonで2つの文字列が近いかどうかを判断するプログラム


sとtの2つの文字列があるとすると、sとtが近いかどうかを確認する必要があります。次の操作を使用して一方を他方から達成できれば、2つの文字列は近いと言えます-

  • 既存の2文字を交換します。 (abcdeからaecdbのように)

  • ある既存の文字が出現するたびに別の既存の文字に変更し、他の文字についても同じようにします。 (aacabb-> bbcbaaのように(ここではすべてのaがbに変換され、その逆も同様です))

どちらの文字列でも、何度でも操作を使用できます。

したがって、入力がs ="zxyyyx"、t ="xyyzzz"の場合、3回の操作でsからtを取得できるため、出力はtrueになります。 ("zxyyyx"-> "zxxyyy")、( "zxxyyy"-> "yxxzzz")、および( "yxxzzz"-> "xyyzzz")。

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

  • sとtに一般的でない文字がある場合は、

    • Falseを返す

  • a:=s内の文字のすべての頻度値のリスト

  • b:=t内の文字のすべての頻度値のリスト

  • リストを並べ替える

  • リストを並べ替えるb

  • aがbと同じでない場合は、

    • Falseを返す

  • Trueを返す

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

from collections import Counter
def solve(s, t):
   if set(s) != set(t):
      return False
   a = list(Counter(s).values())
   b = list(Counter(t).values())
   a.sort()
   b.sort()
   if a != b:
      return False
   return True

s = "zxyyyx"
t = "xyyzzz"
print(solve(s, t))

入力

"zxyyyx", "xyyzzz"

出力

True

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

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

  2. 2つの辞書をマージするPythonプログラム

    このチュートリアルでは、 Pythonで2つの辞書を組み合わせる方法を学習します。 。 2つの辞書をマージするいくつかの方法を見てみましょう。 update()メソッド まず、辞書の組み込みメソッド update()を確認します。 マージします。 update() メソッドはなしを返します オブジェクトであり、2つの辞書を1つに結合します。プログラムを見てみましょう。 例 ## initializing the dictionaries fruits = {"apple": 2, "orange" : 3, "tangerine"