gary@interview:~/interview/coding/191-number-of-1-….md$
$ cat ./coding/191-number-of-1-bits.md
[Coding]

191. Number of 1 Bits

────────────────────────────────────────────────────────────

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

--tags#Bit Manipulation
$ ls ./coding/ | grep -v 191-number-of-1-bits
265. Paint House II256. Paint House143. Reorder List1762. Buildings With an Ocean View
← cd ../codingcd ~