题目说明:
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
一、 进制转换
① 二进制 到 十进制
int('10100111110',2)
② 八进制 到 十进制
int('17',8)
③ 十进制转二进制
bin(10)
④ 十进制转八进制
oct(11)
⑤ 十进制转十六进制
hex(1033)
最后,十六进制和二进制需要通过 “十进制” 过渡,但是八进制和十进制可以任意转换。
二、代码
方法一:
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
# 首先判断数字的大小,确保 x<y
if x > y:
x, y = y, x
# 接着,把y的值转换为二进制
stry = format(y, "b")
# 将x的值也转换为二进制,并且在前面加若干0,使得字符串x和y的长度一致
strx = format(x, "b").rjust(len(stry), "0")
# 用变量time记录不相同的个数
time = 0
for i in range(0, len(stry)):
if stry[i] != strx[i]:
time += 1
return time
方法二:
利用“异或”按位运算符记录二进制中不相等的个数。
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
return bin(x^y).count('1')