思路:
第一种方法是先异或,然后统计异或之后的数字二进制中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;
}
}