count set bit problem in java

 

Method 1:

public class j07_count_set_bit {

    static int countSetBits(int n) {
        int count = 0;
        while (n != 0) {
            if (n % 2 != 0) // (n & 1 == 1) res++;    // res = res + (n & 1)
                count++;
            n = n / 2;      // n = n >> 1;
        }
        return count;
    }

    public static void main(String args[]) {
        int i = 9;
        System.out.println(countSetBits(i));
    }
}


Method 2:

public class j07_count_set_bit {

    static int countSetBits(int n) {
        int count = 0;
        while (n > 0) {
            n &= (n - 1);
            count++;
        }
        return count;
    }

    public static void main(String args[]) {
        int i = 9;
        System.out.println(countSetBits(i));
    }
}


Method 3:

public class j07_count_set_bit {

    static int[] table = new int[256];
    public static void initialize() {
        table[0] = 0;
        for (int i = 0; i < 256; i++) {
            table[i] = (i & 1) + table[i / 2];
        }
    }

    public static int countSetBits(int n) {
        return table[n & 0xff] +
                table[(n >> 8) & 0xff] +
                table[(n >> 16) & 0xff] +
                table[n >> 24];
    }
    public static void main(String[] args) {
        initialize();
        int n = 9;
        System.out.println(countSetBits(n));
    }
}


Comments

Popular Post

Define a class to represent a Bank Account. Include the following members: Data Members: i. Name of the depositor ii. Account number iii. Type of account iv. Balance amount in the account Member Functions: 1. To Input initial values 2. To deposit an amount 3. To withdraw an amount after checking the balance 4. To display name and balance Also write constructor for this class that takes four arguments. It should also handle type of account as savings by default