声明:
今天是第107道题。两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x
和 y
,计算它们之间的汉明距离。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除
(手动比心ღ( ´・ᴗ・` ))
正文
题目:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x
和 y
,计算它们之间的汉明距离。
注意:
0 ≤ x
, y
< 231.
示例:
输入: x = 1, y = 4 输出: 2 解释: 1 (0 0 0 1) 4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制位不同的位置。
解法1。求2者的异或后计算1的个数即可,利用python便利的API来做,代码如下。
执行用时: 24 ms, 在Hamming Distance的Python提交中击败了99.58% 的用户
class Solution(object):
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
return bin(x^y)[2:].count('1')
# 其实把上述代码写开就是求完x、y的异或结果,对其从右往左取和1相与&是否为1,为1则结果+1,就是效率低一些
tar = x^y
res = 0
while tar:
if tar&0x1 == 1:
res += 1
tar >>= 1
return res
结尾
解法1:原创