编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘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