难度分类
简单
题目描述
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离
注意:
0 ≤ x, y < 231.
示例:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
算法
1. 获取x,y的二进制的字符串
2. 使用zfill函数将x,y的二进制字符串中较短的字符串的长度用‘0’填充成与较长位字符串长度一样长
3. 使用zip函数一一遍历对比
考点
十进制与二进制的转换bin函数
zfill函数
zip函数
代码
def hammingdistance(self, x, y):
#step1:转换二进制
binary_x = bin(x)[2:]
binary_y = bin(y)[2:]
#step2:调整长度
if len(binary_x)>len(binary_y):
binary_y = binary_y.zfill(len(binary_x))
else:
binary_x = binary_x.zfill(len(binary_y))
result=0
#step3:按位对比,统计不同的位数
for i,j in zip(binary_x,binary_y):
if i!=j: