python每日一题 1的数量 非常简单
给定一个正整数 n
,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。
不就是转二进制 然后转化为字符 看字符1的数量 直接写代码
class Solution(object):def hammingWeight(self, n):if n==0:return 0binary = ""while n > 0:binary = str(n % 2) + binaryn = n // 2#这个是得到转化为的二进制 而且现在是字符类型的count=0for i in binary:if i=='1':count+=1return count
solution=Solution()
result=solution.hammingWeight(10)
print(result)
然后其实后面的for循环是有些多余的 在得到binary是1的时候直接统计就可以了
class Solution(object):def hammingWeight(self, n):if n==0:return 0binary = ""count = 0while n > 0:binary = str(n % 2)if binary=='1':count+=1n = n // 2#这个是得到转化为的二进制 而且现在是字符类型的return count solution=Solution() result=solution.hammingWeight(10) print(result)
但是不知道为啥 效果还是一般 那么继续想其他的思路 其实对于二进制而言 位运算是最常使用的
就是和1进行与运算 与运算就是将这个数字自动变为2进制了 然后有的话就+1 没有就右移
通过 n & 1
来判断当前最低位是否为1,如果是,就将计数加1;然后将 n
右移一位(n >>= 1
),继续检查下一位,直到 n
变为0。这样就可以统计出二进制中1的个数
那我们来写代码
class Solution(object):
def hammingWeight(self, n):
if n==0:
return 0
binary = ""
count = 0
while n > 0:
if n&1:
count+=1
n = n // 2
#这个是得到转化为的二进制 而且现在是字符类型的
return count
solution=Solution()
result=solution.hammingWeight(128)
print(result)
这个代码真的很简单了 但是我觉得因为我代码能力很差 所以我的弊端就是我总是不会将特点与对应的解题方法联系起来 但是这些也确实是需要日积月累完成的
好的 如果你喜欢这个代码 欢迎点赞!