美文网首页
[leetcode 剑指offer15]二进制中的1的个数

[leetcode 剑指offer15]二进制中的1的个数

作者: 一位学有余力的同学 | 来源:发表于2020-07-15 12:50 被阅读0次

题目

请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。题目地址

输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。

解题思路

看到这个题你可能会疑惑,输入到底是10进制还是2进制?题目说的10进制,示例怎么又二进制了呢?经过验证我才发现python里10进制数可以直接进行二进制运算,比如 10 & 1返回1,所以这个不影响。既然提到了二进制,我们首先想到的二进制运算与操作,两数都为1,返回值为1,计算器加1。
python中还有一点就是可以直接到10进制数左右移位运算,比如我们要将5右移1未:5>>1,返回值为2,是由0101右移1位得到的0010。了解了这点我们开始做题。

解法1:与运算

class Solution:
    def hammingWeight(self, n: int) -> int:
        res = 0
        while n:
            res += n&1
            n >>= 1
        return res

解法2:使用count函数

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

相关文章

网友评论

      本文标题:[leetcode 剑指offer15]二进制中的1的个数

      本文链接:https://www.haomeiwen.com/subject/wrpdhktx.html