此题很简单,异或之后求1的个数就行。
解法一:移位求1的个数
每次判断最后一位是否为1,然后移位即可。
解法二:n&n-1
这个做法只需看1有几个即可,因为n&n-1可以消去最后一个1,当为0时停止。
class Solution {
public:
int hammingDistance(int x, int y) {
int ret = x^y, ans = 0;
while(ret > 0)
{
ans++;
ret &= ret-1;
}
return ans;
}
};