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

バイナリ文字列の「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

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. 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”},

  2. C ++プログラムでの二分探索?

    二分探索は、半区間探索、対数探索、または二分探索とも呼ばれ、ソートされた配列内のターゲット値の位置を見つける検索アルゴリズムです。二分探索は、ターゲット値を配列の中央の要素と比較します。それらが等しくない場合、ターゲットが存在できない半分が削除され、残りの半分で検索が続行され、再び中央の要素がターゲット値と比較され、ターゲット値が見つかるまでこれが繰り返されます。残りの半分が空の状態で検索が終了した場合、ターゲットは配列に含まれていません。アイデアは単純ですが、バイナリ検索を正しく実装するには、特に配列の値が範囲内の整数のすべてではない場合、終了条件と中間点の計算に関する微妙な点に注意する必要