两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x
和 y
,计算它们之间的汉明距离。
注意:
0 ≤ x
, y
< 231.
示例:
输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
汉明距离指的是这两个数字对应二进制位不同的位置的数目,由这句话再看二进制,可以想到求两个数的异或m;
接下来的问题就是判m的二进制里有几个1:
可以让m与1进行与运算,如果是1,说明m最低位是1,否则为0;再将m左移;如此循环下去;
public int hammingDistance(int x, int y) {
int m=x^y;//异或
int count=0;
while(m!=0) {
if((m&1)==1)count++;//与
m>>=1;//左移
}
return count;
}
版权声明:本文为zx2015216856原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。