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
-
Pythonで二分木の最大幅を見つけるプログラム
二分木があるとすると、ツリー内の任意のレベルの最大幅を見つける必要があります。ここで、レベルの幅は、左端のノードと右端のノードの間に保持できるノードの数です。 したがって、入力がのような場合 その場合、出力は2になります これを解決するために、次の手順に従います- マップdを作成し、最小値と最大値を保持するには、最小値は最初は無限大で、最大値は0です 関数dfs()を定義します。これはルートを取ります、pos:=0、depth:=0 ルートがnullの場合、戻り値はありません d [depth、0] =d [depth、0]とposの最小値 d [d
-
2つの文字列から珍しい単語を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの文字列が与えられているので、与えられた文字列から珍しい単語を取得する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # uncommon words def find(A, B): # count count = {} # insert in A for word in A.split(): count[word] = coun