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

Pythonのすべての部分文字列の美しさの合計を見つけるプログラム


文字列sがあるとします。すべてのサブストリングの美しさの合計を見つける必要があります。文字列の美しさは、実際には最も頻度の高い文字と最も頻度の低い文字の頻度の違いです。したがって、文字列が「abaacc」の場合、その頻度は3-1=2です。

したがって、入力がs ="xxyzy"の場合、美しさがゼロ以外のサブ文字列は["xxy"、 "xxyz"、 "xxyzy"、 "xyzy"、 "yzy"]であるため、出力は5になります。それぞれに美しさの価値があります1。

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

  • res:=0

  • 0からs-1のサイズのiの場合、実行します

    • 範囲i+2からs-1のサイズのjの場合、実行

      • c:=インデックスiからjまでのsの部分文字列の文字頻度を含むマップ

      • v:=cのすべての頻度値のリスト

      • res:=res +(vの最大値-vの最小値)

  • 解像度を返す

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

from collections import Counter

def solve(s):
   res=0
   for i in range(len(s)):
      for j in range(i+2,len(s)):
         c=Counter(s[i:j+1])
         v=c.values()
         res+=(max(v)-min(v))
   return res

s = "xxyzy"
print(solve(s))

入力

"xxyzy"

出力

5

  1. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '

  2. リスト内のすべてのペア間の絶対差の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 リスト入力が与えられた場合、リスト内のすべてのペア間の絶対差の合計を見つける必要があります。 列挙() メソッドは、反復可能オブジェクトにカウンターを追加し、それを列挙オブジェクトタイプの形式で返します。 この方法では、絶対差を含むリスト「diffs」があります。 2つの変数が初期化された2つのループを使用します。 1つはカウンターを反復処理し、もう1つはリスト要素を反復処理します。すべての反復で、要素が類似しているかどうかを確認します。 そうでない場合は、絶対差を見つけて、それ