本文共 781 字,大约阅读时间需要 2 分钟。
1.问题描述:
计算在一个 32 位的整数的二进制表示中有多少个 1
。
2.样例:
给定 32
(100000),返回 1
给定 5
(101),返回 2
给定 1023
(1111111111),返回 10
3.代码:
首先两个错误的例子。第一个bin()得到的二进制数组,其中的1不能和int 1 相等于。
def countOnes(self, num): # write your code here l = list(bin(num)) length = len(l) count = 0 for i in range(length): if l[i] == 1: count += 1 return count
第二个不能完全通过测试用例。
def countOnes(self, num): # write your code here count=0 while num!=0: num = num & (num-1) count+=1 return count
正确代码
def countOnes(self, num): # write your code here count=0 for i in range(0,32): if num&1: count+=1 num=num>>1 return count本题很明显是利用二进制位操作与运算&,和1进行与运算,可以判断末尾是不是1。然后通过不断左移一位操作,对为1的位置进行计数。
转载地址:http://couii.baihongyu.com/