- 汉明距离
在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。
布赖恩·克尼根算法
class Solution:
def hammingDistance(self, x, y):
xor = x ^ y
distance = 0
while xor:
distance += 1
# remove the rightmost bit of '1'
xor = xor & (xor - 1)
return distance
C++
class Solution {
public:
int hammingDistance(int x, int y) {
int res = x^y;
int c = 0;
while(res)
{
if(res&1 == 1)
c++;
res = res>>1;
}
return c;
}
};
// & 相同为1否则为0
// | 有一个为1 则就为1
// ^ 两值不同 为1 相同为0
// << 左边丢弃 右边补0
// >> 右边丢弃 左边补0 负数补1