461.Hamming Distance

Bit Manipulation

Question

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:

1
2
3
4
5
6
7
8
9
10
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.

My Answer

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public int hammingDistance(int x, int y) {
int temp = x^y;
int res = 0;
while(temp!=0){
temp = temp & (temp-1);
res++;
}
return res;
}
}

Running time: 12ms

Simpler Answer

1
2
3
4
5
class Solution {
public int hammingDistance(int x, int y) {
return Integer.bitCount(x ^ y);
}
}

Running time: 12ms

BitCount

1
2
3
4
5
6
int res=0;
while(num!=0){
num = num & (num-1);
res++;
}
// res --> the number of bit 1