461. Hamming Distance
The Hamming distance between two integers is the number of positions at which the corresponding bits are different.
Given two integers x
and y
, calculate the Hamming distance.
Note:
0 ≤ x
, y
< 231.
Example:
Input: x = 1, y = 4 Output: 2 Explanation: 1 (0 0 0 1) 4 (0 1 0 0) ? ? The above arrows point to positions where the corresponding bits are different.
求两个整数之间对应的位上,不相同的位有多少个。
由于题目中对于x,y限制了大小,所以最简单的方法,就是2个数字异或之后做右位移运算,判断每一个位置是否为1,进行计数,直到右移次数到达31次为止。
class Solution {
public:
int hammingDistance(int x, int y) {
int n = x ^ y;
int i = 0;
int distance = 0;
do
{
if (n & 1 == 1)
{
++distance;
}
n >>= 1;
++i;
}while (i < 31);
return distance;
}
};
class Solution {
public:
int hammingDistance(int x, int y) {
int n = x ^ y;
int count = 0;
while (n)
{
count++;
n = n & n - 1;
}
return count;
}
};