题目:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/hamming-distance
思路:
- 首先看题目就知道肯定是位运算,位运算无非就是按位^、&或者移位
- 根据解释,可以发现,按位^之后结果设为X,箭头位置会变成1,其他位置为0,那1的数量就是「汉明距离」了
- 所以题目转换为求X的二进制中1的个数,这里有两种方法
- 第一种是使用内置函数将X转换为二进制字符串,求1的个数
- 第二种是向右移位,并和1按位&,根据结果判断该位是否位1,这样也能得到1的个数
代码:
class Solution:
def hammingDistance(self, x: int, y: int) -> int:
"""内置函数法:
return bin(x^y).count('1')
"""
# 移位法
r = x^y
count = 0
while r:
if r&1: count+=1
r = r>>1
return count