[Question]: Problem Statement: Given an array of integers A and an integer B. Find the total number of subarrays having bitwise XOR of all elements equal to k.
Example 1:
Input Format: A = [4, 2, 2, 6, 4] , k = 6
Result: 4
Explanation: The subarrays having XOR of their elements as 6 are [4, 2], [4, 2, 2, 6, 4], [2, 2, 6], [6]
// TC: O(N)
// SC: O(N)
// Question SumWithXor
func subarraysWithXorK(_ arr: [Int], _ k: Int) ->Int {
let arrCount = arr.count; //size of the given array.
var xr = 0;
var mpp:[Int: Int] = [:]
mpp[0] = 1 //setting the value of 0.
var cnt = 0;
for i in 0..<arrCount {
// prefix XOR till index i:
xr = xr ^ arr[i];
//By formula: x = xr^k:
let x = xr ^ k;
// add the occurrence of xr^k
// to the count:
cnt += mpp[x, default: 0]
// Insert the prefix xor till index i
// into the map:
mpp[xr] = mpp[xr, default: 0] + 1
}
return cnt
}
let xorArray = [5, 6, 7, 8, 9]
let kValue = 5;
print("subarraysWithXorK --- ", subarraysWithXorK(xorArray, kValue))// 2