题目
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x
和 y
,计算它们之间的汉明距离。
思路
先找出两个数字哪些位置的数字不同,再统计个数。
使用异或运算,10=01=1 00=11=0
那么z=x^y z的二进制表示中1的个数就是答案。
再用191题求‘’“位一的个数”就得到答案了。
代码
class Solution {
private static int hammingWeight(int n) {
int count = 0;
int c = 1;
for(int i = 0; i < 32; i++) {
if((n & (c << i)) != 0)
count++;
}
return count;
}
public int hammingDistance(int x, int y) {
int z = x ^ y;
return hammingWeight(z);
}
}
网友评论