题目
请实现一个函数,输入一个整数,输出该数二进制表示中 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')
网友评论