题目描述:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。

示例1:

1
2
3
输入:n = 00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。

示例2:

1
2
3
输入:n = 00000000000000000000000010000000
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。

示例3:

1
2
3
输入:n = 11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。

题解方法一:逐位查找

算法思路
1、初始化数量统计变量 res=0 。
2、循环逐位判断: 当 n=0 时跳出。

* res += n & 1 : 若 n&1=1 ,则统计数 resresres 加一。
* n >>= 1 : 将二进制数字 n 无符号右移一位。

返回统计数量 res 。

代码实现如下:

1
2
3
4
5
6
7
8
function majorityElement(nums) {
let res = 0;
while (n) {
res += n & 1;
n >>= 1;
}
return res;
}


总结:大功告成✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️

参考链接: