题目
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。
示例
输入:n = 11 (控制台输入 00000000000000000000000000001011)
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
限制
输入必须是长度为 32 的 二进制串
思路
C++实现。那么C++的话有一个容器叫做bitset,一个count函数就可以知道其中1的个数。所以我们就这么做?还是来看一看下面的做法吧
n & (n - 1) 是将n的最后一位1变为0,那么接下来就好说了
代码
class Solution {
public:
int hammingWeight(uint32_t n) {
// bitset<32> b;
// b = n;
// return b.count();
int res = 0;
while (n) {
n = n & (n - 1);
res ++ ;
}
return res;
}
};