バイナリ文字列の「01」または「10」を削除して、C++プログラムの「01」または「10」から解放します。
このチュートリアルでは、ペアの総数(01または10)を見つけて、ペア(01および10)からバイナリ文字列を解放するプログラムを作成します。例を見てみましょう。
入力 − 101010001
出力 − 4
上記の例では、ペア(01と10)からバイナリ文字列を解放するために、合計4つのペアを削除する必要があります。
すべてのペアを削除した後の結果の文字列は0 。
すべての01を削除する必要があります および10 バイナリ文字列からのペア。したがって、削除されるペアの総数は、 count(1)の最小値です。 およびcount(0) 。
問題を解決するための手順を見てみましょう。
-
バイナリ文字列を初期化します。
-
ゼロと1の数を見つけます。
-
ゼロと1のカウントから最小値を出力します。
例
コードを見てみましょう。
#include <bits/stdc++.h> using namespace std; int findMinimumNumberOfDeletions(string str, int len) { int zeroes_count = 0, ones_count = 0; // counting zeroes and ones for (int i = 0; i < len; i++) { if (str[i] == '0') { zeroes_count++; } else { ones_count++; } } return min(zeroes_count, ones_count); } int main() { string str = "101010001"; int len = str.length(); cout << findMinimumNumberOfDeletions(str, len) << endl; return 0; }
出力
上記のプログラムを実行すると、次の結果が得られます。
4
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
C++で2つのバイナリ文字列を追加するプログラム
2進数の文字列が2つある場合、それら2つの2進数文字列を加算して得られた結果を見つけ、その結果を2進数文字列として返す必要があります。 2進数は、0または1のいずれかで表される数値です。2つの2進数を加算する際には、2進数の加算規則があります。 0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0, carry 1 入力 str1 = {“11”}, str2 = {“1”} 出力 “100” 入力 str1 = {“110”},
-
C ++プログラムでの二分探索?
二分探索は、半区間探索、対数探索、または二分探索とも呼ばれ、ソートされた配列内のターゲット値の位置を見つける検索アルゴリズムです。二分探索は、ターゲット値を配列の中央の要素と比較します。それらが等しくない場合、ターゲットが存在できない半分が削除され、残りの半分で検索が続行され、再び中央の要素がターゲット値と比較され、ターゲット値が見つかるまでこれが繰り返されます。残りの半分が空の状態で検索が終了した場合、ターゲットは配列に含まれていません。アイデアは単純ですが、バイナリ検索を正しく実装するには、特に配列の値が範囲内の整数のすべてではない場合、終了条件と中間点の計算に関する微妙な点に注意する必要