NOTE

汉明距离

使用按位异或计算两个整数之间的汉明距离。

Data Structures & Algorithms创建于 更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 题目描述

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

给出两个整数 x 和 y,计算它们之间的汉明距离。

2. 思路

  1. 思路一
    • 异或:相同为0,不同为1
    • 与:假设取第3位,那么&0001000即可
  2. 思路二
    1. 直接异或
    2. 在统计1的个数

3. 实现

3.1. 每个bit异或

package main

func hammingDistance(x int, y int) int {
	bit := 1
	count := 0
	for i := 0; i < 32; i++ {
		numx := x & bit
		numy := y & bit
		if numx^numy != 0 {
			count += 1
		}
		bit <<= 1
	}
	return count
}

3.2. 异或后统计

func hammingDistance(x int, y int) int {
    res := 0

    xor := x ^ y
    bit := 1
    for i := 0; i < 32; i++ {
        if xor & bit != 0 {
            res++
        }
        bit <<= 1
    }

    return res
}

4. 参考

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看