编程语言
首页 > 编程语言> > Python编程题37--汉明距离

Python编程题37--汉明距离

作者:互联网

题目

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

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

例如:

给定两个整数:x = 1, y = 4,返回结果:2

解释:
1 = (0 0 0 1)
4 = (0 1 0 0)

可以看出 1 和 4 对应二进制位不同的位置的数目有 2 个。

说明:0 ≤ x, y ≤ 2^31 - 1

实现思路1

代码实现1

def hammingDistance(x, y):
    res = 0
    # bin()方法 转为二进制数,zfill() 方法返回指定长度的字符串
    tmp_x, tmp_y = bin(x)[2:].zfill(32), bin(y)[2:].zfill(32)
    for i in range(len(tmp_x)):
        if tmp_x[i] != tmp_y[i]:
            res += 1
    return res

实现思路2

在二进制的异或运算中,例如a=12,b=7,那么a异或b的结果c计算如下:

a = 0 0 0 0 1 1 0 0
b = 0 0 0 0 0 1 1 1
c = 0 0 0 0 1 0 1 1 (相同位的值为0,不同为1)

代码实现2

def hammingDistance(x, y):
    return bin(x ^ y).count("1")

实现思路3

& 按位与运算符:参与运算的两个二进制数, 如果两个相应位都为1, 则该位的结果为1, 否则为0;
>> 右移动运算符:如 i >> 1,表示将 i 对应的二进制数整体右移一位,其实也就相当于 i // 2

代码实现3

def hammingDistance(x, y):
    res, count = x ^ y, 0
    while res:
        count += res & 1
        res >>= 1
    return count

更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)

标签:count,bin,Python,res,37,二进制,异或,汉明,tmp
来源: https://www.cnblogs.com/wintest/p/15705338.html