使用Python以二进制形式查找数字的最长距离的程序
假设我们有一个数字N,我们必须找到它的二进制表示中两个连续1之间的最长距离。如果没有两个连续的1,则返回0。
所以,如果输入像71,那么输出将是4,因为71在二进制中是1000111。现在有四个,第一个1和第二个1的距离为4。所有其他的都相距一个距离。所以这里最长的距离是4。
为了解决这个问题,我们将按照以下步骤操作-
K:=制作N的二进制表示的位列表
最大值:=0,C:=0,S:=0
标志:=假
对于范围0到K大小的i,请执行
S:=我
如果Max
C:=S
最大值:=|SC|
C:=我
标志:=真
如果K[i]为'1'且C为0且Flag为False,则
否则,当K[i]为'1'且为Flag时,则
返回最大值
让我们看看以下实现以获得更好的理解-
示例
def solve(N): B = bin(N).replace('0b','') K = str(B) K = list(K) Max = 0 C = 0 S = 0 Flag = False for i in range(len(K)): if K[i] is '1' and C is 0 and Flag is False: C = i Flag = True elif K[i] is '1' and Flag: S = i if Max输入
71输出结果4