题目来源: 461. 汉明距离
题目描述:
- 描述: 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。 数据范围: 要求: 空间复杂度O(n),时间复杂度O(n)
示例1:
输入:x = 1, y = 4
输出:2
说明:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
示例2:
输入:x = 3, y = 1
输出:1
思路
- 首先,我们要读懂题目,知道到底什么是
汉明距离:两个整数之间的 汉明距离 其实指的是这两个数字各自对应的二进制位不同的位置的数目 - 而且,对于汉明距离,它也是在多个领域中被广泛的使用。
- 比如说:在编码理论中我们会将汉明距离用于错误检测,而在信息论中我们会将汉明距离用于量化字符串之间的差异。
- 两个整数之间的汉明距离是各自对应的二进制的位置上数字不同的位数,我们可以根据这一定义,我们将使用到异或运算的操作,而异或运算记为⊕,当且仅当输入位不同的时候就输出为1,比如0⊕1=1,而0⊕0与1⊕1的结果都是0,这一点需要我们有所了解
- 如果是计算 x 和 y 两个整数之间的汉明距离,我们可以先对 x⊕y进行计算,然后直接统计结果中等于 1 的位数即可。
- 我们也可以直接使用内置函数
bitCount(),这个其实不太推荐,对新手而言没有起到算法题的锻炼作用
具体实现:
class Solution {
public int hammingDistance(int x, int y) {
return Integer.bitCount(x ^ y);
}
}
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 14 天,点击查看活动详情”