汉明距离-LeetCode

题目:

在这里插入图片描述
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/hamming-distance

思路:

  1. 首先看题目就知道肯定是位运算,位运算无非就是按位^、&或者移位
  2. 根据解释,可以发现,按位^之后结果设为X,箭头位置会变成1,其他位置为0,那1的数量就是「汉明距离」了
  3. 所以题目转换为求X的二进制中1的个数,这里有两种方法
  4. 第一种是使用内置函数将X转换为二进制字符串,求1的个数
  5. 第二种是向右移位,并和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

猜你喜欢

转载自blog.csdn.net/qq_35221523/article/details/112342616