Java BitSet HackerRank Solution

Problem Statement

Java’s BitSet class implements a vector of bit values (i.e.:  () or  ()) that grows as needed, allowing us to easily manipulate bits while optimizing space (when compared to other collections). Any element having a bit value is called a set bit.

Given  BitSets,  and, of a size where all bits in both BitSets are initialized to, perform a series of operations. After each operation, print the number of set bits in the respective BitSets as two space-separated integers on a new line.

Solution

``````package hackerrank.corejava.dataStructures;

import java.util.BitSet;
import java.util.Scanner;

public class BitSetExample {
public static void main(String[] args) {
Scanner get = new Scanner(System.in);
int N = get.nextInt();
int M = get.nextInt();

BitSet B1 = new BitSet(N);
BitSet B2 = new BitSet(N);
BitSet[] bitset = new BitSet[3];

bitset[1] = B1;
bitset[2] = B2;

while ( M-- > 0 ) {
String op = get.next();
int x = get.nextInt();
int y = get.nextInt();

switch (op) {
case "AND" -> bitset[x].and(bitset[y]);
case "OR" -> bitset[x].or(bitset[y]);
case "XOR" -> bitset[x].xor(bitset[y]);
case "FLIP" -> bitset[x].flip(y);
case "SET" -> bitset[x].set(y);
}

System.out.printf("%d %d%n", B1.cardinality(), B2.cardinality());
}
}
}``````