两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x
和 y
,计算并返回它们之间的汉明距离。
示例 1:
输入:x = 1, y = 4 输出:2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
示例 2:
输入:x = 3, y = 1 输出:1
思路:汉明距离指的是两个数字对应的二进制位上不同的位置的数目
根据以上定义,我们使用异或运算,记为 ⊕,当且仅当输入位不同时输出为 1。
方法一:使用内置函数
计算 x 和 y 之间的汉明距离,可以先计算x⊕y,然后统计结果中等于 1 的位数。
现在,原始问题转换为位计数问题。位计数有多种思路,将在下面的方法中介绍。
方法一:内置位计数功能
思路及算法
大多数编程语言都内置了计算二进制表达中 11 的数量的函数。在工程中,我们应该直接使用内置函数。
class Solution {
public int hammingDistance(int x, int y) {
return Integer.bitCount(x ^ y);
}
}