计算一个数字的比特位包含1的个数
思路1:将其转换成二进制,计算其中1的个数(见下面代码注释部分),时间复杂度:O(n),n为二进制长度。
思路2:有个小技巧:value &= value - 1这个运算的结果就是把value最后一个1去掉,循环进行运算直到value等于0(所有的1都被去掉)就可以知道vaule拥有多少个1了,时间复杂度:O(m),m为1的个数。
public class LeetCode191 {
public int hammingWeight(int n) {
int len = 0;
/*
String bin = Integer.toBinaryString(n);
for (int i = 0; i < bin.length(); i++) {
if(bin.charAt(i) == '1')
len++;
}
*/
//在Java中