###############問題文###
バイナリ文字列 str が与えられ、1 の前にすべての 0 を置くことができるように、文字列から最小数の文字を削除するように求められます。 ###例### ###入力### リーリー ###出力### リーリー
イラスト
arr[2]、arr[3]、および arr[5]、または arr[4]、arr[6]、および arr[7] を文字列から削除できます。
###入力### リーリー ###出力### リーリー方法1
最初の方法では、2 つの配列を使用します。最初の配列は左側にすべて 1 を格納し、もう一方の配列は右側にすべて 0 を格納します。その後、両方の配列の i 番目のインデックスに要素を追加し、最小の合計を見つけることができます。
###アルゴリズム###ステップ 2
ステップ 4
ステップ 5
ステップ 6
ステップ 7
ステップ 8
ステップ 9 - 結果の値を返します。
###例### リーリー ###出力### リーリー
- サイズ N の文字列とリストを反復するには for ループが必要なため、O(N)。
- 1 と 0 のカウントを保存するために 2 つのリストを使用するため、O(N)。
方法 2この方法は、最初の方法の最適化バージョンです。ここでは、リストの代わりに 2 つの変数を使用して、1 と 0 の数を保存します。 ###アルゴリズム###
- 文字列をループし、指定された文字列内の「0」文字の合計数をカウントし、それに応じて「zero_right」変数の値を更新します。
- 「ones_left」変数を定義し、0 に初期化します。
ステップ 5
###例### リーリー ###出力### リーリー
- O(N)、文字列を反復処理する場合。
- 定数空間のみを使用するため、O(1)。
###結論は###以上がバイナリ文字列ですべての 0 を 1 の前に配置するために必要な最小移動数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。