関数を実装し、整数を入力し、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
class Solution:
def hammingWeight(self, n: int) -> int:
ans = 0
while n:
ans += 1
n &= (n-1)
return ans