使用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

    回到顶部