
思路:
第一种方法是先异或,然后统计异或之后的数字二进制中1的个数。
class Solution {
public int hammingDistance(int x, int y) {
int z = x^y;
return Integer.bitCount(z);
}
}
第二种方法是,先 int z = x^y; 然后z每次都和z-1做与运算,每次z = z&(z-1) 都会使z中的1减少一个。
当z==0的时候,z中的1被消去完了。
class Solution {
public int hammingDistance(int x, int y) {
int z = x^y;
int sum = 0;
while(z!=0)
{
sum++;
z = z&(z-1);
}
return sum;
}
}
本文介绍了计算两个整数汉明距离的两种高效算法。第一种方法利用Java的Integer.bitCount()函数统计异或结果中1的个数。第二种方法通过与运算(z=z&(z-1))逐次消除异或结果中的1,直到z为0,累计消除次数即为汉明距离。这两种方法都巧妙地运用了位操作提高计算效率。

被折叠的 条评论
为什么被折叠?



