题目地址为:https://leetcode-cn.com/problems/hamming-distance/submissions/
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x
和 y
,计算它们之间的汉明距离。
输入: x = 1, y = 4 输出: 2
解题: 这道题主要用到两个结论
1.异或操作:两位不同得1,相同得0;
2.要消除整数n最低位的1,可以使用 n = n & (n-1)。
也就是说:先通过两个数异或操作得到一个值 t,然后再统计 t的二进制有多少个1就好了。
public static int hammingDistance(int x, int y) {
int count = 0;
int t = x^y;
while(t!=0){
t = t & (t-1);
count++;
}
return count;
}