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

PythonでBの前にAを作成するために削除する文字の最小数を見つけるプログラム


2文字のAとBのみで構成される文字列sがあるとすると、Bのすべての出現の前にAsのすべての出現を取得するために、sから削除する必要のある文字の最小数を見つける必要があります。

したがって、入力がS ="AABAABB"の場合、最後のAを削除してAABBBを取得できるため、出力は1になります。

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

  • a_right:=s内の「A」の出現回数

  • b_left:=0

  • ans:=a_right

  • sの各インデックスiと文字cについて、実行します

    • cが「A」と同じ場合

      • a_right:=a_right-1

    • それ以外の場合

      • b_left:=b_left + 1

    • ans:=最小のansとa_right + b_left

  • ansを返す

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

class Solution:
   def solve(self, s):
      a_right = s.count("A")
      b_left = 0

      ans = a_right
      for i, c in enumerate(s):
         if c == "A":
            a_right -= 1
         else:
            b_left += 1
         ans = min(ans, a_right + b_left)
      return ans

ob = Solution()
S = "AABAABB"
print(ob.solve(S))

入力

"AABAABB"

出力

1

  1. Pythonでマージした後も、最小数の色を見つけるプログラムが残っています

    色のリスト(R、G、B)があるとします。これで、2つの異なる色が隣り合っている場合、それらは3番目の色の単一の色のアイテムに変換できます。そのような変換の可能なシーケンスの後に残っているそれらの最小数を見つける必要があります。 したがって、入力がcolors =[G、 R、 G、 B、 R]の場合、以下のように変換できるため、出力は1になります- これを解決するには、次の手順に従います- n:=色のサイズ 色に異なる色が1つしかない場合は、 return n n <=1の場合、 return n x:=0 d:=キーと値のペアを持つマップ{( R、1)、(

  2. 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