寻找最大的二元差距

San*_*ana 2 python

我必须找到整数的二进制间隙。

正整数 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))
Run Code Online (Sandbox Code Playgroud)

小智 5

简单快捷

def solution(N):
    binary = bin(N)[2:].strip("0").split("1")
    return max(len(x) for x in binary)
Run Code Online (Sandbox Code Playgroud)