两个整数之间的汉明距离是指这两个数字对应二进制位不同的位置的数目。
给你两个整数x 和 y,计算并返回他们之间的汉明距离。
对于汉明距离问题我们其实可以将其转换为:计算x 和 y按位异或后求结果中1 的位数。
本题这里我们给出两种解题方法:
class Solution {
public int hammingDistance(int x, int y) {
return Integer.bitCount(x ^ y);
}
}
上代码:
public int hammingDistance(int x, int y) {
int s = x ^ y;
int result = 0;
while (s != 0) {
result += s & 1; //s按位与1(按位与&:如果两个相应的二进制都为1,则该位的结果为1,否则为0)
s = s >> 1; //s二进制整体右移1位
}
return result;
}