使用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<abs(SC),则
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<abs(S-C):
Max = abs(S-C)
C = S
return Max
n = 71
print(solve(n))
输入
71输出结果
4
以上是 使用Python以二进制形式查找数字的最长距离的程序 的全部内容, 来源链接: utcz.com/z/355097.html