LeetCodeEasy- [インタビューの質問15.バイナリの1の数]

関数を実装し、整数を入力し、1の数を数値のバイナリ表現で出力してください。たとえば、9をバイナリとして表すと1001、2ビットは1になります。したがって、9を入力すると、関数は2を出力します。

例1:

入力:00000000000000000000000000001011
出力:3
説明:入力バイナリストリング00000000000000000000000000001011には、3つの「1」ビットがあります。


例2:

入力:00000000000000000000000010000000
出力:1
説明:入力バイナリストリング00000000000000000000000010000000には、合計「1」があります


例3:

入力:11111111111111111111111111111101
出力:31
説明:入力バイナリストリング11111111111111111111111111111101では、合計31ビットが「1」です。

出典:LeetCode
リンク:https ://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof
著作権は控除ネットワークに属しています。商用転載の正式な許可書に連絡し、非商用転載の出典を明記してください。

アイデア1:奇数と偶数を2で除算して判断する

class Solution:
    def hammingWeight(self, n: int) -> int:
        ans = 0
        while n:
            if n & 1 == 1:
                ans += 1
            n //= 2
        return ans

アイデア2:独創的な使用(n-1)&n

Picture10.png

class Solution:
    def hammingWeight(self, n: int) -> int:
        ans = 0
        while n:
            ans += 1
            n &= (n-1)
        return ans

 

公開された314元の記事 ウォン称賛22 ビュー20000 +

おすすめ

転載: blog.csdn.net/qq_39451578/article/details/105483721
おすすめ