01
题目描述
题目描述:
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为'1'的个数(也被称为汉明重量)。
示例:
代码语言:javascript复制输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串00000000000000000000000000001011中,
共有三位为 '1'。
提示:
1.输入必须是长度为32的二进制串。
02
思路和方法
由题意可知,
首先可以判断输入num的最后一位是否为1。
如果为1,则计数器加1,
然后二进制数向右移动丢弃最后一位。
循环执行上述操作直到num的值等于0为止。
我们用代码表示为:
代码语言:javascript复制class Solution(object):
def hammingWeight(self, n):
i = 0
while n !=0:
if n & 1==1:
i =1
n=n>>1
return i
当然本题还有一种快速解法:
通过调用Python的内置函数bin()
代码语言:javascript复制bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
示例:
代码语言:javascript复制Python内置函数:bin()
//返回一个整数 int 或者长整数 long int 的二进制表示。
示例:
输入为:bin(2)
输出为:10
通过调用内置函数bin()与count()。可以直接返回二进制中1的个数。
代码语言:javascript复制count()用于统计字符串里某个字符出现的次数
综上可知,解题代码如下:
代码语言:javascript复制class Solution(object):
def hammingWeight(self, n):
return bin(n).count("1")