题目:汉明距离
分析
- 两个数的汉明距离,就是这两个数进行异或运行,然后统计结果
x
的二进制中1的个数。 - 重点就是怎么求二进制中1的个数,可以通过循环,对
x
不断进行<<1
,来统计末位1的个数。 - 介绍另一种求法,
x & (x -1 )
的结果表示去掉x
中最右边的1
之后数。
思路
- 求出两个数的结果
r
; - 对r进行
r = r & (r -1 )
的操作,统计r = 0
执行的次数;
class Solution {
public int hammingDistance(int x, int y) {
int xor = x ^ y;
int count = 0;
while (xor != 0) {
xor &= (xor - 1);
count++;
}
return count;
}
}