题目描述:
转换成二进制解法Java
public int hammingWeight(int n) {
String s = Integer.toBinaryString(n);
int count = 0;
for (int i = 0; i < s.length(); i++){
if (s.charAt(i) == '1'){
count++;
}
}
return count;
}
这样的时间花费很高,相当于计算了两次,转换成2进制一次,最后遍历一次
高效率解法
public int hammingWeightQuick(int n) {
int res = 0;
while(n != 0) {
//与是与二进制的最后一位数相与
res += n & 1;
//移位操作也是以二进制数进行移位
n >>>= 1;
}
return res;
}
掌握如何用&、>>等运算符处理二进制数据