使用 Python 查找数字二进制形式中 1 的最长距离的程序
假设我们有一个数字 N,我们需要找到其二进制表示中两个连续 1 之间的最长距离。如果没有两个连续的 1,则返回 0。
因此,如果输入为 71,则输出将为 4,因为 71 的二进制形式为 1000111。现在有四个 1,第一个 1 和第二个 1 之间的距离为 4。所有其他 1 之间的距离为 1。因此,这里最长距离为 4。
为了解决这个问题,我们将遵循以下步骤:
K := 创建一个包含 N 的二进制表示的位列表
Max := 0,C := 0,S := 0
Flag := False
对于 i 从 0 到 K 的大小,执行以下操作:
如果 K[i] 为 '1' 且 C 为 0 且 Flag 为 False,则
C:= i
Flag := True
否则,当 K[i] 为 '1' 且 Flag 为 True 时,
S:= i
如果 Max < abs(S-C),则
Max := |S-C|
C:= S
返回 Max
让我们看看下面的实现,以便更好地理解:
示例
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<abs(S-C): Max = abs(S-C) C = S return Max n = 71 print(solve(n))
输入
71
输出
4
广告