两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x
和 y
,计算它们之间的汉明距离
输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
1. 这个题我们可以用java中的api 来做,bitCount();来统计已经二进制数中1的个数。
1.1 java.lang.Integer——整数类
1.1.1 bitCount方法——获取二进制补码中1位的数量
bitCount方法返回指定int值的二进制补码表示形式的1位的数量。
语法 public static int bitCount(int i)
返回值:返回指定int值的二进制补码表示形式的1位的数量。
2.我们也可以用x&(x-1)来统计二进制数x中1的个数。x&(x-1)也可以来判断是否是2的n次方。因为如果一个数x是2的n次方,那么x&(x-1)=0;
代码如下:
class Solution {
public int hammingDistance(int x, int y) {
// return Integer.bitCount(x^y);
int n=x^y;
int count=0;
while(n!=0)
{
count++;
n=n&(n-1);
}
return count;
}
}