Python中的二进制差距
假设我们有一个正整数N,我们必须在N的二进制表示形式中找到两个连续的1之间的最长距离。如果没有两个连续的1,则返回0。
因此,如果输入像22,则输出将为2,因为二进制数22中的22是10110。在二进制表示22中有3个,以及两个连续的1对。第一对连续的1的距离为2,第二对连续的1的距离为1。答案将是这两个距离中的最大值,即2。
为了解决这个问题,我们将遵循以下步骤-
K:=列出N的二进制表示的位的列表
最大:=0,C:=0,S:=0
标志:=False
对于0到K大小的i,执行
S:=我
如果Max<abs(SC),则
C:=S
最大值:=|SC|
C:=我
标志:=真
如果K[i]为'1'并且C为0并且Flag为False,则
否则,当K[i]为“1”并标记时,则
返回最大值
让我们看下面的实现以更好地理解-
示例
class Solution:
def binaryGap(self, 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
ob = Solution()print(ob.binaryGap(22))输入值
22
输出结果
2