mycode  不会。。。

输入是二进制。。。。我还以为十进制。。。。 00000001011 = 11

题意:

编写一个将(无符号)整数作为输入的函数,并返回该数字二进制表示中等于1的位数。
例如:输入1234,其二进制表示为10011010010,所以所要求实现函数的输出应该是5。

参考

1   移位+计数

  1. class Solution(object):
  2. def hammingWeight(self, n):
  3. """
  4. :type n: int
  5. :rtype: int
  6. """
  7. count = 0
  8. while n > 0 :
  9. if(n&1) == 1:
  10. count = count+1
  11. n>>=1
  12. return count

2、

思路:用n&(n-1)来消去一个1 能循环多少次就是能消多少个1~

因为如果那个位置本身就是1的话,那么减去一除了最后一位会变以外,其他都不会变 1111-1=1110;如果最后一位是0;则最右的1变为0,它右边的全部都取反一次,左边不变,然后与原本自己作与能恢复,变回只变换了一位的数据。如1000-1=0111  0111&1000=0000  实际上只把其中最右的1变为0而已;所以他能循环多少次就有多少个1.

如x=0001101011000

x- 1  = 0001101010111   那么&之后,x右边第一个1的位置变为0,右边的0还是0,所以还是相当count一个1

  1. class Solution:
  2.     def NumberOf1(self, n):
  3.         if n<0:
  4.             n = n & 0xffffffff
  5.         cnt = 0
  6.         while n:
  7.             n = n&(n-1)
  8.             cnt += 1
  9.         return cnt
  1. def isPowerOfTwo(n):
  2. if n&(n-1):
  3. return False
  4. return True
  5.  
  6. class Solution(object):
  7. def hammingWeight(self, n):
  8. """
  9. :type n: int
  10. :rtype: int
  11. """
  12. if n==0:
  13. return 0
  14. elif n<=2:
  15. return 1
  16. if isPowerOfTwo(n): #说明二进制数有且仅有一个1啦,所以消去了一个1后,if为False
  17. return 1
  18. else :
  19. c=0
  20. for i in range(32):
  21. c+=n%2 #感觉就是看最低位是不是1
  22. n=n>>1
  23. return c

3

bin(n) 是python的一个系统函数,能够将n 转换为 0b110001 的二进制形式
replace("0b","")是将 0b去掉,这样就得到了n 完整的二进制表示
replace("0","")是将 二进制中的0去掉,这样就得到了生下的都是1的表示
len() 再获取其长度,就是该数字二进制表示中等于1的位数
虽然这是四个系统函数的拼接使用,但有效的减少了相应的代码行数。
  1. def hammingWeight(self, n):
  2. """
  3. :type n: int
  4. :rtype: int
  5. """
  6.   return str(bin(n).replace("0b","")).count("")

或者

  1. return bin(n).count("1")
  1. return len(bin(n).replace("0b","").replace("0",""))
bin(n) 是python的一个系统函数,能够将n 转换为 0b110001 的二进制形式
replace("0b","")是将 0b去掉,这样就得到了n 完整的二进制表示
replace("0","")是将 二进制中的0去掉,这样就得到了生下的都是1的表示
len() 再获取其长度,就是该数字二进制表示中等于1的位数
虽然这是四个系统函数的拼接使用,但有效的减少了相应的代码行数。

作者:曹波波
链接:https://www.jianshu.com/p/e642d225bb59
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

leetcode-easy-others-191. Number of 1 Bits-NO的更多相关文章

  1. 【leetcode❤python】191. Number of 1 Bits

    #-*- coding: UTF-8 -*- class Solution(object):    def hammingWeight(self, n):        if n<=0:retu ...

  2. Leetcode#191. Number of 1 Bits(位1的个数)

    题目描述 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例 : 输入: 11 输出: 3 解释: 整数 11 的二进制表示为 000000 ...

  3. LN : leetcode 191 Number of 1 Bits

    lc 191 Number of 1 Bits 191 Number of 1 Bits Write a function that takes an unsigned integer and ret ...

  4. (easy)LeetCode 191.Number of 1 Bits

    Number of 1 Bits Write a function that takes an unsigned integer and returns the number of ’1' bits ...

  5. 【LeetCode】191. Number of 1 Bits 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 右移32次 计算末尾的1的个数 转成二进制统计1的个 ...

  6. LeetCode 191. Number of 1 bits (位1的数量)

    Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...

  7. 【一天一道LeetCode】#191. Number of 1 Bits

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Write a ...

  8. [LeetCode] 191. Number of 1 Bits 二进制数1的个数

    Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...

  9. LeetCode 191 Number of 1 Bits

    Problem: Write a function that takes an unsigned integer and returns the number of '1' bits it has ( ...

  10. Java for LeetCode 191 Number of 1 Bits

    Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...

随机推荐

  1. RAD Studio 10 up1欢迎页证书不可用

    不只是欢迎页,每打开一个新的工程,都会出现上面那个证书不可用的提示. 解决方法: 1.通过Fiddler网络监控软件分析发现,出现这个问题的原因是bds启动的时候会用https协议访问谷歌的统计服务器 ...

  2. 从FBV到CBV四(访问频率限制)

    比如我们有一个用户大转盘抽奖的功能,需要规定用户在一个小时内只能抽奖3次,那此时对接口的访问频率限制就显得尤为重要 其实在restframework中已经为我们提供了频率限制的组件 先捋一下请求到AP ...

  3. shell条件嵌套(if条件语句)

    [注意1]:和Java.PHP等语言不一样,sh的流程控制不可为空,如: 代码如下: <?php if (isset($_GET["q"])) { search(q); } ...

  4. 17、Nginx HTTPS 实践

    1.HTTPS安全证书基本概述 为什么需要使用HTTPS, 因为HTTP不安全.当我们使用http网站时,会遭到劫持和篡改,如果采用https协议,那么数据在传输过程中是加密的,所以黑客无法窃取或者篡 ...

  5. Detecting Unstable Periodic Orbits in Chaotic Experimental Data (解析)

    原文链接:https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.76.4705 发表在:PRL 1996 ---------------- ...

  6. 关于客户端连接mysql的授权问题

    mysql远程连接 Host * is not allowed to connect to this MySQL server的错误. 是因为mysql需要授权才能访问.授权方式: 授权给某一个ip: ...

  7. Java技术综述

    自己打算好好学习下Java,所以想先明晰Java开发中到底有哪些技术,以便以后学习的过程中,可以循序渐进,随着学习的深入,本文将不断更新. Java基础教程将Java的入门基础知识贯穿在一个实例中,逐 ...

  8. DEDE怎么让栏目列表以权重拍排列

    方法/步骤     进入后台到栏目里,新发布文章也行,编辑文章也行,你会看到有个权重值,不管你怎么改变保存后依然没有变化.   修改权重值,打开dede\album_edit.php文件,找到 UPD ...

  9. Open Cascade 转化为OpenSceneGraph中的Mesh

    #include <osgDB/ReadFile> #include <osgViewer/Viewer> #include <osgGA/StateSetManipul ...

  10. CSS样式,语法,添加方法,文本,字体

    总结一些css的基础知识 ㈠css样式 css:cascading style sheets  层叠样式表 css内容和样式相分离,便于修改样式. ㈡css语法 ㈢css添加方法 ⑴行内添加:放在&l ...