我的代码错误
import sys
x=0
y=[]
n = bin(int(input()))
for i in n:
if i == 1:
x +=1
else:
y.append(x)
x=0
y.append(x)
print(max(y))
输出
5
0b101
0
预期产出
5
0b101
1
(二进制中给定小数的连续值)
答案 0 :(得分:1)
>>> '1' == 1
False
您在字符串上进行迭代,因此元素是一个字符的字符串。
>>> list(bin(5))
['0', 'b', '1', '0', '1']
答案 1 :(得分:0)
您可以使用groupby
将1
打包在一起。
正如@joshlee所提到的,你需要检查字符串是否相等:
from itertools import groupby
n = bin(int(input()))
print(n)
print(max([len(list(bits)) for bit, bits in groupby(n[2:]) if bit == '1']))
使用5
:
5
0b101
1
使用31
:
31
0b11111
5
一次,groupby
在分组之前不会排序是一个优势。对于13
:
13
0b1101
2
结果应为2
,而非3
("1"
的总数
答案 2 :(得分:0)
试试这个
import sys
n = int(input().strip())
bin_n = "{0:b}".format(n)
count = 0
count_l = []
for each in bin_n:
if each == '1':
count+=1
else:
count_l.append(count)
count = 0
print(max(count_l))
答案 3 :(得分:0)
binary_string = str(bin(int(input())))[2:]
print(max(list(map(len, binary_string.split('0')))))
答案 4 :(得分:-1)
import sys
n = int(input())
binary = bin(n)[2:]
count = 0
count_no=[]
for num in binary:
if num=='1':
count += 1
else:
count_no.append(count)
count = 0
count_no.append(count)
print(max(count_no))