题目描述:
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x
和 y
,计算它们之间的汉明距离。
注意:
0 ≤ x
, y
< 231.
示例:
输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
解题思路:
- 先通过函数得到一个数的二进制,以字符串形式返回。
- 对不同长度的字符串采取补位操作,使之长度相同。
- 比较每一位是否相同,计算出汉明距离。
代码实现:
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
cout = 0
x1 = self.getBinary(x)
y1 = self.getBinary(y)
c1 = len(x1)
c2 = len(y1)
if c1 >= c2: #判断长短并补零操作
c = c2
temp = c1 - c2
for i in range(temp):
y1 = '0' + y1
else:
c = c1
temp = c2 - c1
for i in range(temp):
x1 = '0' + x1
for x in range(len(x1)): # 比较每一位得出汉明距离
if x1[x] != y1[x]:
cout += 1
return cout
def getBinary(self,t): # 通过计算返回二进制字符串
s = ''
while t > 1 :
s += str(t % 2)
t = int(t/2)
s += str(t)
ss = s[::-1]
return ss
关注我的公众号免费获取海量python学习资料!!!!