461. 汉明距离
一道easy题,让我学到了很多
极其常规想法,对2取模,比较记录。
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
distance = 0
while True:
if x%2 != y%2:
distance += 1
x //= 2
y //= 2
if x == 0 or y == 0:
bigger = max(x, y)
break
while bigger != 0: # 把剩下的,为1的计入
if bigger%2 == 1:
distance += 1
bigger //= 2
return distance
有点位运算基础的人都会想到异或
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
return Counter(str(bin(x^y)))["1"] # 转二进制->字符->计数器
这里的也可以不使用计数器,使用位移然后和1进行求&
或者是跳过二进制位是0的 Brian Kernighan 算法