答案:汉明距离可以通过计算两个整数异或后的结果中1的个数来得到。具体实现为:对两个整数进行异或操作,然后统计结果中二进制表示下1的个数。
思路:
- 异或操作:两个整数异或的结果中,每一位为1的位置表示原始两个数在该位上不同,为0则表示相同。因此,异或结果中1的个数即为汉明距离。
- 统计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),仅使用固定大小的额外空间存储中间结果。