汉明距离
- 题目描述
- 解题思路
- 自己写的答案,不便捷
- 1)利用循环
- 2)利用右移
- 别人给的高效答案
题目描述
解题思路
自己写的答案,不便捷
1)利用循环
分为两个步骤
主要求出两个数二进制形式上下对应时不相同的个数
1)先进行位异或运算^根据上下的不对应的数形成一个新的二进制数
2)再进行循环操作求出这个新的二进制数有多少个1,这里采用相减的操作
class Solution(object):def hammingDistance(self, x, y):""":type x: int:type y: int:rtype: int"""z=x^yi=0a=1while z>0:a*=2if a>z:z=z-a/2i+=1a=1return i
2)利用右移
分为两个步骤
1)先进行位异或运算
2)通过右移判断共有多少个1
class Solution(object):def hammingDistance(self, x, y):""":type x: int:type y: int:rtype: int"""xor = x ^ ydistance = 0while xor:# mask out the rest bitsif xor & 1:distance += 1xor = xor >> 1return distance
别人给的高效答案
利用系统的内置函数
class Solution(object):def hammingDistance(self, x, y):""":type x: int:type y: int:rtype: int"""return bin(x^y).count('1')