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

Pythonで文字列のバランスをとるための最小限の削除を見つけるプログラム


's'と't'の2文字だけの文字列sがあるとします。 sの任意の数の文字を削除して、文字列のバランスをとることができます。 i

したがって、入力がs ="sststtst"の場合、出力は2になります。これは、インデックス2および6("sststtst"から"sssttt")の文字を削除するか、インデックス3および6("sststtst"から"sstttt")。

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

  • cum_b:=0

  • count_a:=s内の文字's'の数

  • ans:=無限大

  • sのxごとに、実行します

    • xが「s」と同じ場合

      • count_a:=count_a-1

      • ans:=ansの最小値と(cum_b + count_a)

    • それ以外の場合

      • cum_b:=cum_b + 1

      • ans:=ansの最小値と(cum_b-1 + count_a)

  • ansを返す

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

def solve(s):
   cum_b = 0
   count_a = s.count("s")
   ans = float("inf")
   for x in s:
      if x == "s":
         count_a-=1
         ans = min(ans,cum_b + count_a)
      else:
         cum_b+=1
         ans = min(ans,cum_b-1 + count_a)
   return ans

s = "sststtst"
print(solve(s))

入力

"sststtst"

出力

2

  1. Pythonで1つの文字列を他の文字列のサブ文字列にするために必要な最小数の操作を見つけるプログラム

    2つの文字列sとtがあるとすると、sがtをsの部分文字列にするために必要な操作の最小量を見つける必要があります。これで、各操作で、s内の任意の位置を選択し、その位置の文字を他の任意の文字に変更できます。 したがって、入力がs =abbpqr、t =bbxyの場合、サブストリング bbpqを取得して、pをxに、qをに変更できるため、出力は2になります。 y。 これを解決するには、次の手順に従います- k:=tのサイズ、n:=sのサイズ ans:=10 ^ 10 0からn-kの範囲のiの場合、do ss:=s[インデックスiからi+k-1へ]の部分文字列 ans:=最小のans

  2. 文字列内のミラー文字を検索するPythonプログラム

    ユーザー入力文字列とその位置からの位置を指定すると、文字をアルファベット順に文字列の長さまでミラーリングする必要があります。この操作では、「a」を「z」に、「b」を「y」に、「c」を「x」に、「d」を「w」に変更します。これは、最初の文字が最後になることを意味します。オン。 Inpu t: p = 3 Input string = python Output : pygslm アルゴリズム Step 1: Input the string and position from we need to mirror the characters. Step 2: Creating a s