Tuesday, March 10, 2015

Number of 1 Bits

Q:
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.

A:


public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
        int res = 0;
        while(n != 0){
            res++;
            n = n&(n-1);
        }
        return res;
    }
}
 


//

public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
        int count = 0;
        for(int i =0;i<32;i++){
            if( ( n & (1<<i) ) != 0)
                count++;
        }
        return count;
    }
}


Mistakes:

1: 开始都转换成long类型。来处理负值。但那样是不对的。






No comments:

Post a Comment