题目:
分析1:自己只能想到的是,每一位进行位运算统计。
class Solution:
def hammingWeight(self, n: int) -> int:
a=0
b=1
for x in range(32):
if b&n!=0:
a=a+1
b=b<<1
return a
分析2:答案的秀智商的方法。
利用 n 和 n-1 二进制数之间的关系,n的从右到左的第一个为1的变成0,其右边的都变成1,就是n-1,两者进行& 就把 n的最右边的1消掉了。
这样操作,直到n变成0.
class Solution:
def hammingWeight(self, n: int) -> int:
a=0
while n:
n=n&(n-1)
a=a+1
return a