题目解析:两个数,他俩的对应的二进制的不同位置的数目,其实就是异或运算,在计算机中用^就可以计算得到。
Java中有一个内置函数 Integer.bitCount()可以用来计算这个数的二进制位的1的个数,再配合上^,刚好可以算出他俩的汉明距离。
class Solution {
public int hammingDistance(int x, int y) {
return Integer.bitCount(x^y);
}
}
题解2:
x^y记为s,不断检查s的最低位,如果最低位是1,那么就让计数器加1,然后让s右移一位,直到s=0
class Solution {
public int hammingDistance(int x, int y) {
int s=x^y;
int count=0;
while(s!=0){
if(s%2==1){
count++;
}
s=s>>1;
}
return count;
}
}