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