461. Hamming Distance (汉明距离)
1. 题目翻译
两个整数的汉明距离指的是在两个数字的相应位上,有多少位是不同的。
备注:
0≤x,y<231
0
≤
x
,
y
<
2
31
例子:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上方箭头表示在该位置两个数的位不相同。
2. 解题方法
先求出两个数的异或,就可以得出两个数在哪些位上不同。将结果与n按位与,得出一共有多少个不同的位(将n左移而不是将结果右移,可以不用考虑负数的情况)。
3. 代码
//Runtime: 6ms
class Solution {
public:
int hammingDistance(int x, int y) {
int ham = x^y;
int n = 1;
int count = 0;
while(n){
if((ham&n)!=0)
count++;
n<<=1;
}
return count;
}
};