从二进制字符串中删除一个元素,使XOR变为0的方法

本文概述

  • C ++
  • Java
  • Python3
  • C#
  • 的PHP
给定一个二进制字符串, 任务是删除数组中的一个整数, 以使其余数字的XOR为零。任务是计算删除一个元素的方法数量, 以使该字符串的XOR变为零。
例子 :
Input : 10000 Output : 1 We only have 1 ways to Input : 10011 Output : 3 There are 3 ways to make XOR 0. We can remove any of the three 1's.Input : 100011100 Output : 5 There are 5 ways to make XOR 0. We can remove any of the give 0's

一种简单的解决方案是一个一个地删除一个元素, 然后计算剩余字符串的XOR。并计算删除元素使XOR为0的出现次数。
An有效的解决方案基于以下事实。如果1的计数是奇数, 那么我们必须删除1才能使计数0, 并且我们可以删除任何1。如果1的计数为偶数, 则XOR为0, 我们可以删除任何0, 而XOR仍为0。
C ++
// C++ program to count number of ways to // remove an element so that XOR of remaining // string becomes 0. #include < bits/stdc++.h> using namespace std; // Return number of ways in which XOR become ZERO // by remove 1 element int xorZero(string str) { int one_count = 0, zero_count = 0; int n = str.length(); // Counting number of 0 and 1 for ( int i = 0; i < n; i++) if (str[i] == '1' ) one_count++; else zero_count++; // If count of ones is even // then return count of zero // else count of one if (one_count % 2 == 0) return zero_count; return one_count; }// Driver Code int main() { string str = "11111" ; cout < < xorZero(str) < < endl; return 0; }

Java
// Java program to count number of ways to // remove an element so that XOR of remaining // string becomes 0. import java.util.*; class CountWays { // Returns number of ways in which XOR become // ZERO by remove 1 element static int xorZero(String s) { int one_count = 0 , zero_count = 0 ; char [] str=s.toCharArray(); int n = str.length; // Counting number of 0 and 1 for ( int i = 0 ; i < n; i++) if (str[i] == '1' ) one_count++; else zero_count++; // If count of ones is even // then return count of zero // else count of one if (one_count % 2 == 0 ) return zero_count; return one_count; }// Driver Code to test above function public static void main(String[] args) { String s = "11111" ; System.out.println(xorZero(s)); } }// This code is contributed by Mr. Somesh Awasthi

Python3
# Python 3 program to count number of # ways to remove an element so that # XOR of remaining string becomes 0.# Return number of ways in which XOR # become ZERO by remove 1 element def xorZero( str ): one_count = 0 zero_count = 0 n = len ( str )# Counting number of 0 and 1 for i in range ( 0 , n, 1 ): if ( str [i] = = '1' ): one_count + = 1 else : zero_count + = 1# If count of ones is even # then return count of zero # else count of one if (one_count % 2 = = 0 ): return zero_count return one_count# Driver Code if __name__ = = '__main__' : str = "11111" print (xorZero( str ))# This code is contributed by # Surendra_Gangwar

C#
// C# program to count number // of ways to remove an element // so that XOR of remaining // string becomes 0. using System; class GFG { // Returns number of ways // in which XOR become // ZERO by remove 1 element static int xorZero( string s) { int one_count = 0, zero_count = 0; int n = s.Length; // Counting number of 0 and 1 for ( int i = 0; i < n; i++) if (s[i] == '1' ) one_count++; else zero_count++; // If count of ones is even // then return count of zero // else count of one if (one_count % 2 == 0) return zero_count; return one_count; }// Driver Code public static void Main() { string s = "11111" ; Console.WriteLine(xorZero(s)); } }// This code is contributed by anuj_67.

的PHP
< ?php // PHP program to count number // of ways to remove an element // so that XOR of remaining // string becomes 0.// Return number of ways in // which XOR become ZERO // by remove 1 elementfunction xorZero( $str ) { $one_count = 0; $zero_count = 0; $n = strlen ( $str ); // Counting number of 0 and 1 for ( $i = 0; $i < $n ; $i ++) if ( $str [ $i ] == '1' ) $one_count ++; else $zero_count ++; // If count of ones is even // then return count of zero // else count of one if ( $one_count % 2 == 0) return $zero_count ; return $one_count ; }// Driver Code $str = "11111" ; echo xorZero( $str ), "\n" ; // This code is contributed by aj_36 ?>

输出:
5

【从二进制字符串中删除一个元素,使XOR变为0的方法】如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

    推荐阅读