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

Pythonでバイナリ文字列を2つの部分に分割して最大スコアを見つけるプログラム


バイナリ文字列sがあるとします。ここで、文字列を2つの空でないサブ文字列s1とs2に分割する操作について考えてみましょう。この分割のスコアは、s1でカウントされる「0」の合計とs2でカウントされる「1」の合計です。取得できる最大スコアを見つける必要があります。

したがって、入力がs ="011001100111"の場合、文字列を "01100" + "110111"のように分割できるため、出力は8になります。その場合、スコアは3 + 5=8です。

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

  • ones:=s内の「1」の数

  • ゼロ:=0

  • ans:=0

  • 0からs-2のサイズのiの場合、実行

    • s[i]が"0"と同じ場合、

      • ゼロ:=ゼロ+ 1

    • それ以外の場合

      • もの:=もの-1

    • ans:=ansと(1 + 0)の最大値

  • ansを返す

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

def solve(s):
   ones = s.count("1")
   zeros = 0
   ans = 0
   for i in range(len(s) - 1):
      if s[i] == "0":
         zeros += 1
      else:
         ones -= 1
      ans = max(ans, ones + zeros)
   return ans

s = "011001100111"
print(solve(s))

入力

"011001100111"

出力

8

  1. Pythonで二分木の最大幅を見つけるプログラム

    二分木があるとすると、ツリー内の任意のレベルの最大幅を見つける必要があります。ここで、レベルの幅は、左端のノードと右端のノードの間に保持できるノードの数です。 したがって、入力がのような場合 その場合、出力は2になります これを解決するために、次の手順に従います- マップdを作成し、最小値と最大値を保持するには、最小値は最初は無限大で、最大値は0です 関数dfs()を定義します。これはルートを取ります、pos:=0、depth:=0 ルートがnullの場合、戻り値はありません d [depth、0] =d [depth、0]とposの最小値 d [d

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

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