[LeetCode] 461. 汉明距离

[LeetCode] 461. 汉明距离
最新回答
微光迷失尘夏

2026-07-06 03:42:53

答案:汉明距离可以通过计算两个整数异或后的结果中1的个数来得到。具体实现为:对两个整数进行异或操作,然后统计结果中二进制表示下1的个数。

思路

  1. 异或操作:两个整数异或的结果中,每一位为1的位置表示原始两个数在该位上不同,为0则表示相同。因此,异或结果中1的个数即为汉明距离。
  2. 统计1的个数:将异或后的结果转换为二进制字符串,直接统计其中字符"1"的出现次数。

代码实现

class Solution: def hammingDistance(self, x: int, y: int) -> int: return bin(x ^ y).count("1")

代码解释

  • x ^ y:对输入的两个整数 x 和 y 进行按位异或操作,得到一个新整数,其二进制表示中1的个数即为汉明距离。
  • bin(...):将异或后的整数转换为二进制字符串(例如,5 会转换为 "0b101")。
  • .count("1"):统计二进制字符串中字符 "1" 的出现次数,即为汉明距离。

示例验证

  • 输入 x = 1(二进制 0001),y = 4(二进制 0100),异或结果为 5(二进制 0101)。
  • bin(5) 得到 "0b101",其中 "1" 出现2次,因此汉明距离为2,与题目示例一致。

复杂度分析

  • 时间复杂度:O(1),因为整数位数固定(最多32位),异或和统计操作均为常数时间。
  • 空间复杂度:O(1),仅使用固定大小的额外空间存储中间结果。