【一天一道Leetcode】位1的个数
看那个码农
共 1464字,需浏览 3分钟
·
2021-04-11 22:50
本篇推文共计2000个字,阅读时间约3分钟。
01
题目描述
题目描述:
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为'1'的个数(也被称为汉明重量)。
示例:
输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串00000000000000000000000000001011中,
共有三位为 '1'。
提示:
1.输入必须是长度为32的二进制串。
02
思路和方法
由题意可知,
首先可以判断输入num的最后一位是否为1。
如果为1,则计数器加1,
然后二进制数向右移动丢弃最后一位。
循环执行上述操作直到num的值等于0为止。
我们用代码表示为:
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()
bin() 返回一个整数 int 或者长整数 long int 的二进制表示。
示例:
Python内置函数:bin()
//返回一个整数 int 或者长整数 long int 的二进制表示。
示例:
输入为:bin(2)
输出为:10
通过调用内置函数bin()与count()。可以直接返回二进制中1的个数。
count()用于统计字符串里某个字符出现的次数
综上可知,解题代码如下:
class Solution(object):
def hammingWeight(self, n):
return bin(n).count("1")
【年终总结】你好2021,再见2020。
【秋招纪实录】一篇特别正经的【腾讯】求职经验分享
【一天一道Leetcode】删除有序数组的重复项Ⅱ
你与世界
只差一个
公众号
评论