原贴地址:http://blog.leanote.com/post/dawnmagnet/lc461
题目
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x
和 y
,计算它们之间的汉明距离。
注意:
0 ≤ x
, y
< 231.
示例:
输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
思路分析
通过观察可以得出,给入两个数字,我们输出的答案就是这两个数字在二进制位上的不同点,也就是说,只有在对应二进制位不一样的时候我们就统计这个位,既然是这样我们可以异或一下赋值给一个新变量,再统计这个新变量里有多少个1即可。
C++代码
class Solution {
public:
int hammingDistance(int x, int y) {
return __builtin_popcount(x ^ y);
}
};
Rust代码
impl Solution {
pub fn hamming_distance(x: i32, y: i32) -> i32 {
(x ^ y).count_ones() as i32
}
}