191. Number of 1 Bits
每次檢查該整數的 bit 值的最右一位數是不是 1
,如果是的話計數器就可以加 1
,接著可以把整個 bit 向右移一個位置。
class Solution:
def hammingWeight(self, n: int) -> int:
ans = 0
while n:
if (n & 1 == 1):
ans += 1
n = n >> 1
return ans
上面比對 bit 的條件式其實只會判斷是否為 1
或是 0
,所以可以簡化成下述的表達式。
class Solution:
def hammingWeight(self, n: int) -> int:
ans = 0
while n:
ans += n & 1
n = n >> 1
return ans
特殊技巧
class Solution:
def hammingWeight(self, n: int) -> int:
ans = 0
while n:
n = n & (n - 1)
ans += 1
return ans