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

更新于: 2021年5月29日

247 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告