使用Python查找数字二进制形式中连续1之间最长距离的程序

使用Python查找数字二进制形式中连续1之间最长距离的程序

假设有一个数字N,我们必须找到其二进制表示中两个连续1之间的最长距离。如果没有两个连续的1,则返回0。

因此,如果输入为71,则输出将是4,因为71的二进制表示为1000111。现在有四个1,第一个1和第二个1的距离为4。其余的都距离一个单位。所以这里的最长距离是4。

为了解决这个问题,我们将按照以下步骤进行——

  • K:将N的二进制表示的位拆分合成一个列表

  • Max:0,C:0,S:0

  • Flag:False

  • 对于范围从0到K大小的i,执行以下操作

    • 如果K[i]为’1’,且C为0且Flag为False,则
      • C:= i

      • Flag:= True

    • 否则,当K[i]为’1’且Flag时,

      • 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程