在不使用特殊函数(math、numpy等(的情况下,检查十进制数字的二进制表示形式中是否只有一个"1",最有效的方法(就速度和空间而言(是什么?
例如,1是"001",4是"100"。
我试过这个
binary = "{0:b}".format(value)
if binary.count('1') != 1:
return 1
else:
return 0
我相信这是O(log n(在空间上,O(n(在速度上?有没有办法更有效地做到这一点?
其中一种方法可以是-
binary_num = '00101010'
result = [1 for x in binary_num if x == '1']
if len(result) == 1:
print('Success')
else:
print('Failed')