您的位置:首页 > 其它

LeetCode#461. Hamming Distance

2017-03-29 20:52 381 查看
求两个数的汉明距离(即两个整数转成二进制,对应位值不同的数量)

例如: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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: