Leetcode 461 Hamming Distance

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
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int hammingDistance(int x, int y) {
int ans=0;
for(int i=0;i<31;i++){
int bx=x%2;
int by=y%2;
if(bx!=by) ans++;
x/=2;
y/=2;
}
return ans;
}
};

法二

用异或 返回两个数 位不同的状态

统计异或结果转成二进制后中 1的个数

1:00000000 00000000 00000000 00000001(32进制)

即 与1 每次右移1位

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
int hammingDistance(int x, int y) {
int ans=0;
int t=x^y;
while(t>0){
ans+=t&1;
t>>=1;
}
return ans;
}
};