1.题目描述
The Hamming distance between two integers is the number of positions at which the corresponding bits are different.
Given two integers x and y, calculate the Hamming distance.
Note:
0 ≤ x, y < 231.
Example:
Input: x = 1, y = 4
Output: 2
Explanation:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
The above arrows point to positions where the corresponding bits are different.
翻译:汉明距离->两个整数的二进制表示中,有多少位对应的数不同。例子中1和4的二进制表示中有bit1和bit3上不同,所以汉明距离是2.
2.解题
对应位不同则计数加1,联想到异或运算。
(1)x,y做异或,z=x XOR y。
(2)求结果z的二进制表示中1的个数
3.代码
c++
int hammingDistance(int x, int y) {
//两个数的异或结果中,用二进制表示有多少个1
int z = x^y;
int count = 0;//计数
while (z > 0) {
z = z&(z - 1);
count++;
}
return count;
}
python
def hammingDistance(self, x, y):
z=x^y#异或
count=0#计数
while(z):
z=z&(z-1)
count+=1
return count