求两个数的汉明距离(即两个整数转成二进制,对应位值不同的数量)
例如:1 4 汉明距离为2
1 (0 0 0 1)
4 (0 1 0 0)难度:Easy
- 思路:当想x,y中至少有一个不为0,则对两个数进行取余比较,不相等则count加1,否则这两个数都除2(while循环)
- 代码:
public class Solution {
public int hammingDistance(int x, int y) {
int count = 0;
while(y != 0 || x != 0){
int a = x%2;
int b = y%2;
if(a != b){
count++;
}
x = x/2;
y = y/2;
}
return count;
}
}
- 利用位运算,效率更高
public class Solution {
public int hammingDistance(int x, int y) {
int xor = x ^ y, count = 0;
for (int i=0;i<32;i++) count += (xor >> i) & 1;
return count;
}
}