解题代码:
inthammingDistance(int x, int y) {
int a=x^y;
int b=0;
for(;a>0;){
if(a%2==1)
b++;
a/=2;
}
return b;
}
解题思路:
题目要求计算两个数字的Hamming Distance,首先两个等长字符串之间的Hamming Distance是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。而计算两个数字的Hamming Distance就是要计算这两个数字在二进制状态下不同的位的个数。
因此首先对两个数字进行异或计算,然后对于异或的结果,计算出里面位是1的个数,即可得出上题目中两个数的Hamming Distance。