Leecode 0461.hamming-distance
461. 汉明距离
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。
给你两个整数 x
和 y
,计算并返回它们之间的汉明距离。
示例 1:
1 | 输入:x = 1, y = 4 |
示例 2:
1 | 输入:x = 3, y = 1 |
题目大意
汉明距离是指两个整数的二进制表示中,对应位置二进制位不同的数目。给定两个整数 x
和 y
,计算并返回它们之间的汉明距离。
例如:
- 输入
x=1, y=4
,二进制分别为0001
和0100
,对应位不同的位置有 2 处,输出2
; - 输入
x=3, y=1
,二进制分别为0011
和0001
,对应位不同的位置有 1 处,输出1
。
解题思路
核心思路是利用异或运算 + 统计 1 的个数,步骤如下:
- 异或运算(XOR):异或的特性是 “相同为 0,不同为 1”。对
x
和y
做异或操作,得到的结果xor_result
中,每一位的 1 都对应x
和y
二进制位不同的位置; - 统计 1 的个数:计算
xor_result
中 1 的总数,这个总数就是x
和y
的汉明距离。
统计 1 的个数有两种常用方法:
- 方法 1(直观):将
xor_result
转为二进制字符串,直接统计字符串中'1'
的数量; - 方法 2(高效):使用 Brian Kernighan 算法(每次清除最右侧的 1,直到结果为 0,统计清除次数),时间复杂度更优(仅遍历 1 的个数次)。
方法 1:遍历二进制位(直观易懂)
1 | class Solution { |
方法 2:Brian Kernighan 算法(高效统计 1 的个数)
1 | class Solution { |
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.