mask
"""
1. initialize res, mask
2. loop 32 bits, cnt cases any bit n& mask != 0, then move mask bit 1 forward
3. return cnt cases
"""s
class Solution:
def hammingWeight(self, n: int) -> int:
# time O(1) space O(1)
mask = 1
res = 0
for i in range(32):
res += (n & mask != 0)
mask <<= 1
return res
optimization : here only iterate 1 bits, solution above need to interate all bits
class Solution:
def hammingWeight(self, n: int) -> int:
# time O(1) space O(1)
cnt = 0
while n != 0:
cnt += 1
n = n & (n-1)
return cnt