两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 注意: 0 ≤ x, y < 231. 示例: 输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
思路:
1、采用异或的方法,相同为0,不同为1 0 0 1 1 0 1 1 0 ———— 0 1 0 1 2、n&(n-1)的结果消去了 n 中最右边的1.
class Solution {
public:
int hammingDistance(int x
, int y
) {
int res
= 0;
int xor_res
= x
^ y
;
while(xor_res
!=0){
res
++;
xor_res
=xor_res
&(xor_res
-1);
}
return res
;
}
};