一个数 number,若对 number 与 number-1 做与运算,即 number&(number-1) 时,则number的 二进制表示中最右边为 1 的位会被置零。
例如:number = 44,其二进制为 101100
number = number&(number-1) = 40, 其二进制为 101000,最右边的 1 被置零;
number = number&(number-1) = 32, 其二进制为100000,最右边的 1 被置零;
number = number&(number-1) = 0, 所有的 1 都被置零。
解答:
public int hammingDistance(int x, int y) {
int t = x ^ y;
int distance = 0;
while (t!= 0) {
distance += 1;
t = t & (t - 1);
}
return distance;
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_46027243/article/details/115009804
内容来源于网络,如有侵权,请联系作者删除!