Ways to remove one element from a binary string so that XOR becomes zero in C++


In this problem, we are given a binary string. Our task is to count the total number of ways in which we can remove one element such that XOR becomes zero.

Let’s take an example to understand the problem,

Input

n = 11010

Output

3

to solve this problem, we need the logic that if the number of 1’s is even then XOR of the string will be 0, otherwise, we need to remove one 1 from the string. We can remove any number of 0’s without affecting the XOR.

Program to show the implementation of our solution,

Example

 Live Demo

#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;
}

Output

Number of ways to make XOR zero is 4

Updated on: 17-Jul-2020

121 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements