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;
}
}
本文介绍了一种计算给定整数二进制表示中1的位数的方法,提供了两种实现方案:一种逐位检查,另一种通过消除最低位的1来减少迭代次数。

335

被折叠的 条评论
为什么被折叠?



