반응형

A binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary representation of N.

 

number 9 has binary representation 1001 and contains a binary gap of length 2

number 529 has binary representation 1000010001 and contains two binary gaps: one of length 4 and one of length 3

number 20 has binary representation 10100 and contains one binary gap of length 1

 number 15 has binary representation 1111 and has no binary gaps

number 32 has binary representation 100000 and has no binary gaps

 

given a positive integer N, returns the length of its longest binary gap. The function should return 0 if N doesn't contain a binary gap

 

N = 1041 the function should return 5, because N has binary representation 10000010001 and so its longest binary gap is of length 5

 

Given N = 32 the function should return 0, because N has binary representation '100000' and thus no binary gaps

 

def solution(N):
    # write your code in Python 3.6
    binary = bin(N).lstrip('0b')
    count = 0
    max_count = 0

    for i in binary:
        if i == '1':
            if max_count < count:
                max_count = count
            count = 0
        else:
            count += 1
    
    return max_count

 

def solution(N):
    # write your code in Python 3.6
    arr = []
    n = N
    while n//2 >= 1:
        arr.append(n%2)
        n = n//2
    arr.append(1)
    arr.reverse()
    count = 0
    max_count = 0

    for i in arr:
        if i == 1:
            if max_count < count:
                max_count = count
            count = 0
        else:
            count += 1
    
    return max_count
반응형