下面这种是讨论中高票,我觉得不错的
public static int hammingWeight(int n) {
int ones = 0;
while(n!=0) {
ones = ones + (n & 1);
n = n>>>1;
}
return ones;
}
再贴上我这种偷懒的方法
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
return Integer.bitCount(n);
}
}
我想的其他方法是将二进制转换为字符串,切割成数组,然后用indexOf去找,或者用map去找
下面这种也是讨论中的高票,真不知道人的脑袋是怎么长的
public int hammingWeight(int n) {
int count = 0;
for (;n!=0;n = n & (n-1))
count++;
return count;
}
2016/8/27