【力扣日记】191 位1的长度 | 汉明重量和汉明距离

题目描述:

输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。

算法:

class Solution:
    def hammingWeight(self, n: int) -> int:
        return bin(n).count('1')

值得一提的是,内建函数bin是将数值转换成二进制的字符串。

题目描述:

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。

注意:0 ≤ x, y < 231.
例如:4->100;1->001;两数的汉明距离就是2.

算法:

class Solution:
    def hammingDistance(self, x: int, y: int) -> int:
        s1,s2=bin(x)[2:],bin(y)[2:]
        if len(s1)>len(s2):
            s2='0'*(len(s1)-len(s2))+s2
        else:s1='0'*(len(s2)-len(s1))+s1
        Sum=0
        for i in range(len(s1)):
            if s1[i]!=s2[i]:Sum+=1
        return Sum

执行用时 :40 ms, 在所有 python3 提交中击败了79.80%的用户
内存消耗 :13.6 MB, 在所有 python3 提交中击败了5.82%的用户

————————
也可以使用位运算:return bin(x ^ y).count('1'),一行即可。

发布了70 篇原创文章 · 获赞 15 · 访问量 4317

猜你喜欢

转载自blog.csdn.net/Heart_for_Ling/article/details/103341822