一、题目:
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
二、解题思路:
方法一:
将x和y分别用%2转换为二进制的每一位,如果相等就记录下来;
方法二:
直接返回gcc内集函数__builtin_popcount(x^y)。
三、代码和结果:
//方法二:
class Solution {
public:
int hammingDistance(int x, int y) {
int count=0;
if(x==y)
return 0;
while(x!=0||y!=0){
if(x%2!=y%2)
count++;
x=x/2;
y=y/2;
}
return count;
}
};
/*方法一:
class Solution {
public:
int hammingDistance(int x, int y) {
return __builtin_popcount(x ^ y);
}
};
*/
结果:
方法二:
方法一: