461.汉明距离

题目描述

题解

通过分析题意可知, 求两个数的汉明距离, 就是求两个数的二进制形式下, 有多少位的数字不相同.

很自然地想到异或运算, 经过异或后, 哪个位置不同则异或结果在该位置就是1. 求出异或结果有多少个1即可, 这里要用到右移.

1
2
3
4
5
6
7
8
9
10
11
12
public int hammingDistance(int x, int y) {
int ans = x ^ y;
int res = 0;
while (ans != 0) {
if ((ans & 1) == 1) {
res++;
}
ans = ans >> 1;
}

return res;
}
-------------本文结束感谢您的阅读-------------
可以请我喝杯奶茶吗