leedcode 位1的數量

Junior_bond發表於2024-03-06

自己寫的

class Solution:
    def hammingWeight(self, n: int) -> int:
        # 將整數 n 轉換為二進位制字串,去除字首 '0b'
        n_str = bin(n)[2:]

        # 用於儲存 '1' 的列表
        res_li = []

        # 遍歷二進位制字串的每一位
        for i in n_str:
            # 如果當前位是 '1',則加入列表
            if int(i):
                res_li.append(i)

        # 返回 '1' 的個數(列表的長度)
        return len(res_li)

位運算:使用n&=n-1

class Solution:
    def hammingWeight(self, n: int) -> int:
        # 初始化計數器
        count = 0
        
        # 當 n 不為零時,執行迴圈
        while n:
            # 透過 n &= n - 1 操作,將 n 的最低位 '1' 置零
            n &= n - 1
            
            # 每置零一次,計數器加一
            count += 1
        
        # 返回 '1' 的個數
        return count

相關文章