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;
}
Category >> Algorithms >> Interview  
If you want someone to read your code, please put the code inside <pre><code> and </code></pre> tags. For example:
<pre><code> 
String foo = "bar";
</code></pre>
  • Ng Kai

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

  • Paweł Kierski

    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.

  • Marina


    public int count(int num) {
    int count = 0;
    while(num > 0) {
    count += num & 1;
    num >>= 1;
    }
    return count;
    }

  • cathryn leno

    Hello! This is my first visit to your blog! We are a team of volunteers and starting a new initiative in a community in the same niche. Your blog provided us useful information to work on. You have done an outstanding job.
    https://www.besanttechnologies.com/training-courses/amazon-web-services-training-in-bangalore
    http://www.besanttechnologies.in/amazon-web-services-training-in-bangalore.html

  • Pantham Pranathi

    The for loop needs to run from i=0 to t<32

  • Omid

    did you tried it ? n = 5

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

  • int hammingWeight(int n) {
    int num = 0;
    while (n != 0) {
    n = n & (n-1);
    num++;
    }
    return num;
    }

  • Walden

    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.

  • Shailesh Agarwal

    Loop should run from 0 to 31

  • Why don’t you use this :

    public class Solution {
    public int hammingWeight(int n) {
    return Integer.bitCount(n);
    }
    }