Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as theHamming weight).
For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011
, so the function should return 3.
这种方法虽然运行超时,但是思路可以看看
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int sum=0;
while(n!=0){
if((n&1)==1)
sum++;
n=n>>1;
}
return sum;
}
}
下边这个方法很快,因为有几个1就循环几次
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int sum=0;
while(n!=0){
n=n&(n-1);//n&(n-1)会清除最右边的那个1,随便写一下就懂了
sum++;
}
return sum;
}
}