前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【一天一道Leetcode】位1的个数

【一天一道Leetcode】位1的个数

作者头像
潘永斌
发布2021-04-20 15:56:20
2530
发布2021-04-20 15:56:20
举报
文章被收录于专栏:看那个码农看那个码农

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")
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 看那个码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01
  • 02
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档