Algorithm


Problem Name: Java BitSet

Problem Link: https://www.hackerrank.com/challenges/java-bitset/problem?isFullScreen=true

In this HackerRank Functions in Java programming problem solution,

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

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

Input Format

The first line contains 2 space-separated integers, N (the length of both BitSets B1 and B2 and M (the number of operations to perform), respectively.
The M subsequent lines each contain an operation in one of the following forms:

In the list above, <set> is the integer 1 or 2 , where 1 denotes B1 and denotes B2.

<index> is an integer denoting a bit's index in the BitSet corresponding to <set>

For the binary operations AND , OR , XOR operands are read from left to right and the BitSet resulting from the operation replaces the contents of the first operand. For example:

And 2 1

Constraints

1 <= N <= 1000

1 <= M <= 10000

Output Format

After each operation, print the respective number of set bits in BitSet B1 and BitSet B2 as 2 space-separated integers on a new line.

Sample Input

5 4
AND 1 2
SET 1 4
FLIP 2 2
OR 2 1

Sample Output

0 0
1 0
1 1
1 2

 

 

Code Examples

#1 Code Example with Java Programming

Code - Java Programming


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

public class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N = scan.nextInt();
        int M = scan.nextInt();
        BitSet B1 = new BitSet(N);
        BitSet B2 = new BitSet(N);
        while (M-- > 0) {
            String str = scan.next();
            int a      = scan.nextInt();
            int b      = scan.nextInt();
            switch (str) {
                case "AND":
                    if (a == 1) {
                        B1.and(B2);
                    } else {
                        B2.and(B1);
                    }
                    break;
                case "OR":
                    if (a == 1) {
                        B1.or(B2);
                    } else {
                        B2.or(B1);
                    }
                    break;
                case "XOR":
                    if (a == 1) {
                        B1.xor(B2);
                    } else {
                        B2.xor(B1);
                    }
                    break;
                case "FLIP":
                    if (a == 1) {
                        B1.flip(b);
                    } else {
                        B2.flip(b);
                    }
                    break;
                case "SET":
                    if (a == 1) {
                        B1.set(b);
                    } else {
                        B2.set(b);
                    }
                    break;
                default:
                    break;
            }
            System.out.println(B1.cardinality() + " " + B2.cardinality());
        }
        scan.close();
    }
}
Copy The Code & Try With Live Editor
Advertisements

Demonstration


Previous
[Solved] Java Sort in Java solution in Hackerrank - Hacerrank solution Java
Next
[Solved] Java Inheritance I in Java solution in Hackerrank - Hacerrank solution Java