简介
这是LeetCode中461题,汉明距离就是两个二进制表示的数字,对应位置数字不相同的位置数,比如1(0001)和4(0100)有两位不同,所以这两个数字的汉明距离为2。汉明距离在通信领域中的差错控制编码中有很重要的应用。
思路
首先将两个数字按位异或,对得到的数求1的个数,这一步借鉴了《程序员面试宝典》中的第三题(记得好像是,不是的话也是前5个)中的方法。
代码
class Solution {
public:
int hammingDistance(int x, int y) {
int z = x^y;
int count = 0;
while(z!=0)
{
z = z&(z-1);
count++;
}
return count;
}
};