问题是
Given two integers x and y, calculate the Hamming distance.
Note:0 ≤ x, y < 231.
我尝试使用 ^ 运算符并只计算结果 str 中 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)
此处您的代码不正确:您不应将二进制字符串转换为整数(当然不使用基数 10)。例如,由于 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
。
我是一名优秀的程序员,十分优秀!