Given a binary array arr[], the task is to calculate the bitwise XOR of all the elements in this array and print it.
Examples:
Input: arr[] = {“100”, “1001”, “0011”}
Output: 1110
0100 XOR 1001 XOR 0011 = 1110Input: arr[] = {“10”, “11”, “1000001”}
Output: 1000000
Approach:
- Step 1: First find the maximum-sized binary string.
- Step 2: Make all the binary strings in an array to the size of the maximum sized string, by adding 0s at the Most Significant Bit
- Step 3: Now find the resultant string by performing bitwise XOR on all the binary strings in the array.
For Examples:
- Let the binary array be {“100”, “001”, and “1111”}.
- Here the maximum sized binary string is 4.
- Make all the binary strings in the array of size 4, by adding 0s at the MSB. Now the binary array becomes {“0100”, “0001” and “1111”}
- Performing bitwise XOR on all the binary strings in the array
“0100” XOR “0001” XOR “1111” = “1110”
Below is the implementation of the above approach:
C++
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std;// Function to return the bitwise XOR// of all the binary stringsvoid strBitwiseXOR(string* arr, int n){ string result; int max_len = INT_MIN; // Get max size and reverse each string // Since we have to perform XOR operation // on bits from right to left // Reversing the string will make it easier // to perform operation from left to right for (int i = 0; i < n; i++) { max_len = max(max_len, (int)arr[i].size()); reverse(arr[i].begin(), arr[i].end()); } for (int i = 0; i < n; i++) { // Add 0s to the end // of strings if needed string s; for (int j = 0; j < max_len - arr[i].size(); j++) s += '0'; arr[i] = arr[i] + s; } // Perform XOR operation on each bit for (int i = 0; i < max_len; i++) { int pres_bit = 0; for (int j = 0; j < n; j++) pres_bit = pres_bit ^ (arr[j][i] - '0'); result += (pres_bit + '0'); } // Reverse the resultant string // to get the final string reverse(result.begin(), result.end()); // Return the final string cout << result;}// Driver codeint main(){ string arr[] = { "1000", "10001", "0011" }; int n = sizeof(arr) / sizeof(arr[0]); strBitwiseXOR(arr, n); return 0;} |
Java
// Java implementation of the approachimport java.io.*;import java.util.*;class GFG{// Function to return the// reverse stringstatic String reverse(String str){ String rev = ""; for(int i = str.length() - 1; i >= 0; i--) rev = rev + str.charAt(i); return rev;}// Function to return the bitwise XOR// of all the binary stringsstatic String strBitwiseXOR(String[] arr, int n){ String result = ""; int max_len = Integer.MIN_VALUE; // Get max size and reverse each string // Since we have to perform XOR operation // on bits from right to left // Reversing the string will make it easier // to perform operation from left to right for(int i = 0; i < n; i++) { max_len = Math.max(max_len, (int)arr[i].length()); arr[i] = reverse(arr[i]); } for(int i = 0; i < n; i++) { // Add 0s to the end // of strings if needed String s = ""; for(int j = 0; j < max_len - arr[i].length(); j++) s += '0'; arr[i] = arr[i] + s; } // Perform XOR operation on each bit for(int i = 0; i < max_len; i++) { int pres_bit = 0; for(int j = 0; j < n; j++) pres_bit = pres_bit ^ (arr[j].charAt(i) - '0'); result += (char)(pres_bit + '0'); } // Reverse the resultant string // to get the final string result = reverse(result); // Return the final string return result;}// Driver codepublic static void main(String[] args){ String[] arr = { "1000", "10001", "0011" }; int n = arr.length; System.out.print(strBitwiseXOR(arr, n));}}// This code is contributed by akhilsaini |
Python3
# Function to return the bitwise XOR # of all the binary strings import sysdef strBitwiseXOR(arr, n): result = "" max_len = -1 # Get max size and reverse each string # Since we have to perform XOR operation # on bits from right to left # Reversing the string will make it easier # to perform operation from left to right for i in range(n): max_len = max(max_len, len(arr[i])) arr[i] = arr[i][::-1] for i in range(n): # Add 0s to the end # of strings if needed s = "" # t = max_len - len(arr[i]) for j in range(max_len - len(arr[i])): s += "0" arr[i] = arr[i] + s # Perform XOR operation on each bit for i in range(max_len): pres_bit = 0 for j in range(n): pres_bit = pres_bit ^ (ord(arr[j][i]) - ord('0')) result += chr((pres_bit) + ord('0')) # Reverse the resultant string # to get the final string result = result[::-1] # Return the final string print(result) # Driver code if(__name__ == "__main__"): arr = ["1000", "10001", "0011"] n = len(arr) strBitwiseXOR(arr, n)# This code is contributed by skylags |
C#
// C# implementation of the approachusing System;class GFG{// Function to return the// reverse stringstatic string reverse(string str){ string rev = ""; for(int i = str.Length - 1; i >= 0; i--) rev = rev + str[i]; return rev;}// Function to return the bitwise XOR// of all the binary stringsstatic string strBitwiseXOR(string[] arr, int n){ string result = ""; int max_len = int.MinValue; // Get max size and reverse each string // Since we have to perform XOR operation // on bits from right to left // Reversing the string will make it easier // to perform operation from left to right for(int i = 0; i < n; i++) { max_len = Math.Max(max_len, (int)arr[i].Length); arr[i] = reverse(arr[i]); } for(int i = 0; i < n; i++) { // Add 0s to the end // of strings if needed string s = ""; for(int j = 0; j < max_len - arr[i].Length; j++) s += '0'; arr[i] = arr[i] + s; } // Perform XOR operation on each bit for(int i = 0; i < max_len; i++) { int pres_bit = 0; for(int j = 0; j < n; j++) pres_bit = pres_bit ^ (arr[j][i] - '0'); result += (char)(pres_bit + '0'); } // Reverse the resultant string // to get the final string result = reverse(result); // Return the final string return result;}// Driver codepublic static void Main(){ string[] arr = { "1000", "10001", "0011" }; int n = arr.Length; Console.Write(strBitwiseXOR(arr, n));}}// This code is contributed by akhilsaini |
Javascript
<script>// Javascript implementation of the approach// Function to return the bitwise XOR// of all the binary stringsfunction strBitwiseXOR(arr, n){ var result = ""; var max_len = -1000000000; // Get max size and reverse each string // Since we have to perform XOR operation // on bits from right to left // Reversing the string will make it easier // to perform operation from left to right for (var i = 0; i < n; i++) { max_len = Math.max(max_len, arr[i].length); arr[i] = arr[i].split('').reverse().join(''); } for (var i = 0; i < n; i++) { // Add 0s to the end // of strings if needed var s; for (var j = 0; j < max_len - arr[i].length; j++) s += '0'; arr[i] = arr[i] + s; } // Perform XOR operation on each bit for (var i = 0; i < max_len; i++) { var pres_bit = 0; for (var j = 0; j < n; j++) pres_bit = pres_bit ^ (arr[j][i] - '0'.charCodeAt(0)); result += (pres_bit + '0'.charCodeAt(0)); } // Reverse the resultant string // to get the final string result = result.split('').reverse().join(''); // Return the final string document.write( result);}// Driver codevar arr = ["1000", "10001", "0011"];var n = arr.length;strBitwiseXOR(arr, n);</script> |
11010
Time complexity: O(n*m) where n is the number of strings in the array, and m is the maximum length of any string in the array.
Space Complexity: O(n*m)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Here you will find 16759 more Info on that Topic: geeksforgeeks.org/bitwise-xor-of-a-binary-array/ […]
… [Trackback]
[…] Read More Information here on that Topic: geeksforgeeks.org/bitwise-xor-of-a-binary-array/ […]