题目描述
两个整数之间的汉明距离是指,相应二进制位不同的位置的数目。
给你两个整数x和y,计算他们之间的汉明距离。
其中,0 ≤ x, y < 2^31.
样例
输入:
x = 1, y = 4
输出:
2
样例解释
x = 1 ==> 0 0 0 1
y = 4 ==> 0 1 0 0
—————-↑—-↑
两个数位的二进制不同,所以答案为2.
思路:
* 逐位比较即对2取余,得出最后一位然后比较。
* 再向右移一位 。
public static void main(String[] args) {
int hanmingDistance = getHanmingDistance(1, 4);
System.out.println(hanmingDistance);
}
private static int getHanmingDistance(long x, long y) {
int distance = 0;
while (x != 0 || y != 0) {
if (x % 2 != y % 2) {
distance++;
}
x = x >> 1;
y = y >> 1;
}
return distance;
}