2022.6.28今天你刷题了吗?
题目:
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。
分析:
给你一个32位整型数,例如 01,你需要找到里面有多少个1,然后返回个数
思路:我们利用 n&n-1公式,改公式可以实现每次最低位的1变为0.所以我们把所有1变为0,统计变的次数,就是1的个数。
解析:
class Solution {
public:
int hammingWeight(uint32_t n) {
int ret = 0;
while (n) {
n &= n - 1;
ret++;
}
return ret;
}
};