LeetCode – Number of 1 Bits (Java)

Problem

Write a function that takes an unsigned integer and returns the number of ’1′ bits it has (also known as the Hamming weight).

For example, the 32-bit integer ’11′ has binary representation 00000000000000000000000000001011, so the function should return 3.

Java Solution

public int hammingWeight(int n) {
    int count = 0;
    for(int i=1; i<33; i++){
        if(getBit(n, i) == true){
            count++;
        }
    }
    return count;
}
 
public boolean getBit(int n, int i){
    return (n & (1 << i)) != 0;
}

10 thoughts on “LeetCode – Number of 1 Bits (Java)”

  1. For java, you can just convert the value to String and remove all 0s, and then return the length of that String.

  2. There’s no-loop solution (C code, but can be easily adopted to Java):

    int pop(unsigned x)
    {
    x = x - ((x >> 1) & 0x55555555);
    x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
    x = (x + (x >> 4)) & 0x0F0F0F0F;
    x = x + (x >> 8);
    x = x + (x >> 16);
    return x & 0x0000003F;
    }

    Got from here.

  3. did you tried it ? n = 5

    int nuum= 0;
    while (n != 0)
    {
    int x = n & 1;
    if (x == 1) nuum++;
    n >>= 1;
    }
    return nuum;

  4. We could not use bit operators, just keep on dividing and modding by 2 until n==0; every time n%2==1, just add 1 to int answer.

Leave a Comment