Python异或运算和汉明距离

3

问题是

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

注意: 0 ≤ x,y < 231。

我尝试使用^运算符并仅计算结果字符串中1的数量。但它没有通过所有测试用例。例如,93^73返回11188,而应该返回其他内容。

这是我的代码:

#hamming distance
class Solution(object):
    def hammingDistance(x, y):
        """
        :type x: int
        :type y: int
        :rtype: int
        """
        bin_x=int(bin(x)[2:])
    bin_y=int(bin(y)[2:])
    print(bin_x)
    print(bin_y)
    print(str(bin_x^bin_y))
    #.count('1'))
    hammingDistance(93,73)

我应该只需要执行 return(str(bin(x^y)).count('1')) - Eliza
1个回答

4
你的代码有误:你不应该将二进制字符串转换为整数(尤其不是使用十进制)。例如,由于bin(16)[2:]等于字符串'1000',你可以看到int(bin(16)[2:])等于实际的整数1000,这不是你想要的!
在Python中,对于整数,^运算符已经为您执行了它们的二进制表示。例如,在Python中,20 ^ 25直接计算出正确答案13,因为:
  • 20的二进制表示为10100
  • 25的二进制表示为11001
  • 13的二进制表示为01101
现在,您可以通过使用Python的count函数来计算字符串中1字符的数量来完成您的方法。例如,'01101'.count('1')计算结果为3

谢谢!!! 哈哈。实际上,午饭后我查了一下文档,发现按位运算符也适用于 int 类型,所以我只是写了 return(str(bin(x^y)).count('1')) - Eliza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接