题目链接
汉明距离
题目描述
注意点
- 汉明距离指的是这两个数字对应二进制位不同的位置的数目
解答思路
- 要找到两个数字对应二进制位不同的位置,首先要用到异或运算符,对x和y进行异或计算后,可以得到二进制位不同位置为1其余位置为0的二进制数s,之后再计算s中1的数量即可
代码
class Solution {
public int hammingDistance(int x, int y) {
// 异或操作,同0异1
int s = x ^ y;
int res = 0;
while(s != 0) {
// 按位与,判断最后一位是否为1
res += s & 1;
// 右移一位,即除以2
s = s >> 1;
}
return res;
}
}
关键点
- java中Integer包装类里有bitCount可直接计算二进制数中1的数量
- 异或运算符^,与运算符&,右移运算符>>