题目来源:
leetcode:
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的个数:
cpp1 Runtime: 6 ms:
class Solution {
public:
int hammingDistance(int x, int y) {
int dist =0;
int n = x^y;
while(n)
{
++dist;
n &=n-1;
}
return dist;
}
};
cpp2 Runtime: 3 ms
class Solution {
public:
int hammingDistance(int x, int y) {
int nor = x^y;
int count =0;
for(int i =0; i<32;i++)
{
count += (nor >> i) & 1;
}
return count;
}
};
cpp:5ms
class Solution {
public:
int hammingDistance(int x, int y) {
int n = x^y;
int num=0;
int mask =1;
while(n!=0)
{
if(n&mask) num++;
n=n>>1 ;
}
return num;
}
};