Computer >> Máy Tính >  >> Lập trình >> C ++

Các cách xóa một phần tử khỏi chuỗi nhị phân để XOR trở thành 0 trong C ++

Trong bài toán này, chúng ta được cung cấp một chuỗi nhị phân. Nhiệm vụ của chúng tôi là đếm tổng số cách mà chúng tôi có thể xóa một phần tử sao cho XOR trở thành số không.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

n = 11010

Đầu ra

3

để giải quyết vấn đề này, chúng ta cần logic rằng nếu số 1 là chẵn thì XOR của chuỗi sẽ là 0, nếu không, chúng ta cần xóa một 1 khỏi chuỗi. Chúng tôi có thể xóa bất kỳ số 0 nào mà không ảnh hưởng đến XOR.

Chương trình cho thấy việc triển khai giải pháp của chúng tôi,

Ví dụ

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

Đầu ra

Number of ways to make XOR zero is 4