LeetCode第461题汉明距离(Python)
题目描述
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
注意:
0
≤
x
,
y
<
2
31
0 ≤ x, y < 2^{31}
0≤x,y<231.
示例 1:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/hamming-distance/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题方法和思路
转化为二进制后比对即可
代码:
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
if x == y:
return 0
# 确保x比y小
if x > y:
x, y = y, x
bin_x = bin(x)[2:]
bin_y = bin(y)[2:]
bin_x = '0' * (len(bin_y)-len(bin_x)) + bin_x
temp = 0
for index, val in enumerate(bin_x):
if val != bin_y[index]:
temp += 1
return temp
利用异或运算
思路:由于异或运算的定义为:
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
这本题要求即可转化为经过异或运算以后统计结果二进制中1
的个数。
代码:
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
return bin(x^y).count('1')