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

2つの文字列をチェックするプログラムは、Pythonで文字を交換するかどうかによって等しくなる可能性があります


2つの小文字の文字列sとtがあり、それらは同じ長さであるとします。 sから1つの文字を選択し、tから別の文字を選択して入れ替えることができます。この操作は何度でも実行できます。最後に、2つの文字列を同じにすることが可能かどうかを確認する必要があります。

したがって、入力がs ="abcd" t ="cdab"の場合、出力はTrueになります

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

  • fre:=sとtの連結文字列に存在する各要素の頻度を含むリスト
  • freのすべての値のリストにある各cntについて、
    • cnt mod 2が1の場合、
      • Falseを返す
  • Trueを返す

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

from collections import Counter
def solve(s, t):
   fre = Counter(s+t)

   for cnt in fre.values():
      if cnt % 2:
         return False

   return True

s = "abcd"
t = "cdab"
print(solve(s, t))

入力

"abcd", "cdab"

出力

True

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

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

  2. Pythonで文字を交換して、同じ長さの2つの文字列を等しくするようにプログラムします

    長さnの2つの文字列sとtがあるとします。 sから1つの文字を取得し、tから別の文字を取得してそれらを交換できます。無制限の数のスワップを行うことができます。 2つの文字列を等しくすることが可能かどうかを確認する必要があります。 したがって、入力がs =xy、t =yxの場合、出力はTrueになります これを解決するには、次の手順に従います- st:=sとtを連結した後に文字列を並べ替える 範囲0からst-1のサイズのiの場合、2ずつ増やします。 st[i]がst[i+ 1]と同じでない場合、 Falseを返す Trueを返す 理解を深めるために、次の実装を見てみましょう-