位1的个数

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

示例 1:
	输入:00000000000000000000000000001011
	输出:3
	解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
示例 2:
	输入:00000000000000000000000010000000
	输出:1
	解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。
示例 3:
	输入:11111111111111111111111111111101
	输出:31
	解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'

解法:
对于传入的二进制数,函数在接受二进制数时二进制数n表示成0b…

在python中
0b或0B表示二进制
0o或0O表示八进制
0x或0X表示十六进制
(第一位的0表示数字零,第二位表示字母)
	我们想知道二进制数中含有1的数目,那么我们需要遍历该二进制数,但是我在其他文章也常写到的问题就是数值是不可以直接遍历的,所以我们可以将其转换为字符串,因为字符串可以遍历。
  
     python有个内置的函数bin()可以直接将二进制数转换成十进制数,bin()函数会将二进制略写,如:
n = 0B00000000000000000000000000001011
m = bin(n)
print(m)
print(type(m))
输出:
0B1011            
<class 'str'>

代码:

class Solution(object):
    def hammingWeight(self, n):
        n = bin(n)
        answer = 0
        for i in range(2,len(n)):
            if int(n[i]) == 1:
                answer = answer + 1
        return answer
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值