【发布时间】:2020-09-16 03:52:34
【问题描述】:
我必须找到一个整数的二进制间隙。
正整数 N 中的二进制间隙是在 N 的二进制表示中两端被 1 包围的连续零的任何最大序列。
例如:N = 1041 二进制:10000010001 结果:5(5 个零被 1 包围)
下面是我的代码,虽然 bin_no[22] 是 1 但它永远不会进入 if 语句。
def solution(N):
bin_no = f'{N:32b}'
print(len(bin_no))
count = []
for i in range(len(bin_no)):
if bin_no[i] == 1:
count[i] = 0
j=i
while(bin_no[j+1] != 1):
count[i] +=1
j +=1
print (count[i])
print(solution(529))
【问题讨论】:
-
你混淆了数字和字符。比较
'1',而不是1。 -
与您的要求有些相干,但请注意 Python 有一个内置函数
bin,用于将整数转换为二进制表示;这样,您不必用空格填充,并且可以将每个二进制数字转换为整数,以防您更喜欢与这些数字进行比较;就像for binary_digit in map(int, bin(529)[2:]) ... if binary_digit == 1 ... -
您将数字与字符进行比较。这是python中的一个很好的解决方案。 stackoverflow.com/questions/48951591/…
标签: python