解题思路0
- 输入n为32位的无符号整数,那么i遍历0~31
- 要算出多少位是1,按位与操作;
- mask初始值为1,每次向左移一位:
mask<<=1
Python3代码
class Solution:
def hammingWeight(self, n: int) -> int:
mask = 1
bit = 0
for i in range(0, 32):
if n & mask:
bit+=1
mask<<=1
return bit
解题思路1:
-
n&(n-1)
即可以消除n最末位的1; - 例如:
7(0111)&6(0110)=6(0110)
; -
6(0110)&5(0101)=4(0100)
6的末位1消除后变成4。
class Solution:
def hammingWeight(self, n: int) -> int:
bit=0
while n != 0:
bit +=1
n &= (n-1)
return bit
网友评论