位运算基础题,先把不同的位置求出来,运用异或
再不断做与操作判断当前位是否为1
class Solution {
public:
int hammingDistance(int x, int y) {
int cnt=0;
int s=x^y;
for(auto i=0;i<32;i++)
{
if((s&1)==1)
{
cnt++;
}
s>>=1;
}
return cnt;
}
};
算法的前提是int我们知道是32为情况下,chatgpt给出了更有效率的算法
int hammingDistance(int x, int y) {
int s = x ^ y, res = 0;
while (s) {
s &= s - 1;
res++;
}
return res;
}
不断的把地位1去掉,直到得0
补充,调库
class Solution {
public:
int hammingDistance(int x, int y) {
return __builtin_popcount(x ^ y);
}
};