题目描述
请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。
示例:
输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。
方法一:直接使用bin()转化成二进制,然后使用count统计1的个数
空间复杂度:O(n)
时间复杂度:O(1)
class Solution:
def hammingweight():
return bin(n).count('1')
方法二:逐位进行判断即可
与运算定义:
对于二进制数字n。
- n&1 = 0 则二进制最低位为0
- n&1 = 1 则二进制最低位为1
思想:
- 判断n与运算结果是否为1,然后进行计数。
- 然后将二进制数右移1位。
时间复杂度:O(nlogn)
空间复杂度:O(1)
class Solution:
def hammingweight():
res = 0
while n:
res += n & 1
n >>= 1
return res