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

C++でXORがゼロになるようにバイナリ文字列から1つの要素を削除する方法


この問題では、バイナリ文字列が与えられます。私たちのタスクは、XORがゼロになるように1つの要素を削除できる方法の総数を数えることです。

問題を理解するために例を見てみましょう

入力

n = 11010

出力

3

この問題を解決するには、1の数が偶数の場合、文字列のXORが0になるというロジックが必要です。それ以外の場合は、文字列から1を削除する必要があります。 XORに影響を与えることなく、任意の数の0を削除できます。

ソリューションの実装を示すプログラム

#include<iostream>
#include<string.h>
using namespace std;
int wayXorZero(string binaryString){
   int oneCount = 0, zeroCount = 0;
   int n = binaryString.length();
   for (int i = 0; i < n; i++)
      if (binaryString[i] == '1')
         oneCount++;
      else
   zeroCount++;
   if (oneCount % 2 == 0)
      return zeroCount;
   return oneCount;
}
int main(){
   string binaryString = "10110100";
   cout<<"Number of ways to make XOR zero is "<<wayXorZero(binaryString);
   return 0;
}

出力

Number of ways to make XOR zero is 4

  1. C++で文字列から二分木を構築する

    括弧と整数で構成される文字列があるとします。その文字列から二分木を構築する必要があります。入力全体が二分木を表します。これは、0、1、または2組の括弧が後に続く整数を保持します。整数はルートの値を表し、括弧のペアには同じ構造の子二分木が含まれます。 したがって、入力が「4(2(3)(1))(6(5))」の場合、出力は[3,2,1,4,5,6](順序付き走査)になります これを解決するには、次の手順に従います- 関数solve()を定義します。これには、s、idx、が必要です。 =sのサイズの場合、- nullを返す num:=空の文字列 while(

  2. C++でstd::stringからスペースを削除します

    このプログラムでは、C++でstd::stringからスペースを削除する方法を説明します。これを削除するには、remove()関数を使用します。このremove()関数を使用すると、イテレータの開始と終了を取得し、次にそのイテレータオブジェクトから削除される3番目の引数を取得します。 Input: A string "This is C++ Programming Language" Output: "ThisisC++ProgrammingLanguage" アルゴリズム Step 1: Get the string Step 2: Remove sp