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.
两个整数之间的汉明距离是相应位不同的位置数。
给定两个整数x和y,计算汉明距离。
Note:
0 ≤ x, y < 2^31.
2,题目思路
对于二进制串a和b来说,汉明距离等于:
- aXORb中的1的个数。
而计算一个数字中,二进制位的1的个数,有这样一个固定的方法:
int bitsNum = 0;
while(n)
{
bitsNum++;
n = n & (n-1);
}
于是,我们就得到了解决办法。
3,代码实现
static auto speedup = [](){
ios::sync_with_stdio(false);
cin.tie(nullptr);
return nullptr;
}();
class Solution {
public:
int hammingDistance(int x, int y) {
int n = x ^ y;
int dist = 0;
while(n)
{
dist++;
n &= (n-1);
}
return dist;
}
};