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

各パーティションがPythonでアナグラムを形成するように2つの文字列をパーティション化するプログラム


同じ長さの2つの空でない文字列sとtがあるとします。 sとtの部分文字列の各ペアが同じサイズであり、それらが互いにアナグラムになるように、それらを部分文字列に分割する必要があります。ここで、sとtのカット数が最大になるようなカットインデックスを見つけます。結果が見つからない場合は、空のリストを返します。

したがって、入力がs ="bowcattiger" t ="owbactietgr"の場合、出力は[0、3、5、6、10]になります。これは、各文字列がお互いのアナグラム。 s =["bow"、 "ca"、 "t"、 "tige"、 "r"]、t =["owb"、 "ac"、 "t"、 "ietg"、 "r"]

>

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

  • 間隔:=新しいリスト
  • cs:=sに文字が存在するマップとその頻度
  • ct:=tに存在する文字とその頻度を含むマップ
  • csがctと同じでない場合、
    • 新しいリストを返す
  • s-1から0までの範囲サイズのxの場合、実行
    • cs [s [x]]:=cs [s [x]]-1
    • ct [t [x]]:=ct [t [x]]-1
    • csがctと同じ場合、
      • 間隔の最後にxを挿入
  • リストの間隔を並べ替えて返す

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

from collections import Counter
class Solution:
   def solve(self, a, b):
      intervals = []
      ca = Counter(a)
      cb = Counter(b)
      if ca != cb:
         return []
      for x in reversed(range(len(a))):
            ca[a[x]] -= 1
            cb[b[x]] -= 1
            if ca == cb:
               intervals.append(x)
      return sorted(intervals)
ob = Solution()
s = "bowcattiger"
t = "owbactietgr"
print(ob.solve(s, t))

入力

"bowcattiger", "owbactietgr"

出力

[0, 3, 5, 6, 10]

  1. Pythonで文字列として表される2つの数値を追加するプログラム

    2つの文字列SとTがあり、これら2つが整数を表しているとすると、それらを追加して、同じ文字列表現で結果を見つける必要があります。 したがって、入力が「256478921657」、「5871257468」の場合、出力は「262350179125」になり、256478921657 + 5871257468 =262350179125 これを解決するには、次の手順に従います- SとTを文字列から整数に変換する ret =S + T retを文字列として返す 理解を深めるために、次の実装を見てみましょう- 例 class Solution:    def solve

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

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