题目
求一个int数字里面还有二进制1的数目
思路
个人的思路是先用str(n) 将其转化为字符列表,然后使用for循环检测每一位。
代码
我自己的写的代码:
class Solution(object):
def hammingWeight(self, n):
"""
:type n: int
:rtype: int
"""
N=bin(n)
count=0
for i in N:
if i=='1':
count+=1
return count
发现到一种直接位运算的神奇算法:
class Solution(object):
def hammingWeight(self, n):
c = 0
while n:
n &= n - 1
c += 1
return c