1 题目描述
2 解题思路
2.1 方法1:直接调用bin和列表中的count函数
class Solution:
def hammingWeight(self, n: int) -> int:
return bin(n).count('1')
2.2 方法2:移位+比较每一位是否为1
class Solution:
def hammingWeight(self, n: int) -> int:
count=0
while(n!=0):
if(n&1==1):
count+=1
else:
pass
n=n>>1
return(count)
2.3 方法3;布莱恩-科尼根算法
当我们在number和number-1上做and位运算的时候,原数字最右边等于1的那一比特会被移除
这样的时间比方法2小(方法2是每一位都要考虑)
class Solution:
def hammingWeight(self, n: int) -> int:
count=0
while(n!=0):
n=n&(n-1)
count+=1
return(count)