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.
Hamming distance 就是两个二进制数(字符串)有多少位不同,所以用异或得到新的二进制数,再统计这个新的二进制数有几个1就好了。
有一个数学技巧,要消除二进制数最后一位1,可以用n&(n-1)操作。
https://zhidao.baidu.com/question/1370480689655286419.html
所以这好像是LeetCode最简单的题目了。
int hammingDistance(int x, int y) {
int ans = x^y,count=0;//x,y按位异或得到ans
while(ans!=0){
ans=ans&(ans-1);//每次把最后一位1变成0
count++;
}
return count;
}