题目描述
blablabla
样例
输入:9
输出:2
解释:9的二进制表示是1001,一共有2个1。
——————
输入:-2
输出:31
解释:-2在计算机里会被表示成11111111111111111111111111111110,
一共有31个1。
算法
先转化成二进制数,然后判断大小(正数负数)。
正数直接循环找1即可
负数要用32 减去 二进制数的长度。然后找1,找到一个加一个
复杂度
有那么亿点点复杂
Python3 代码
class Solution(object):
def NumberOf1(self,n):
"""
:type n: int
:rtype: int
"""
bin_num = str(bin(n))
if n >= 0:
new_bin_num = bin_num[2:]
j = 0
for i in new_bin_num:
if i == '1':
j += 1
return j
else:
new_bin_num = bin_num[3:]
index =32 - len(new_bin_num)
for i in new_bin_num:
if i == '1':
index += 1
return index