Source code for kyu_7.find_the_longest_gap.gap

#  Created by Egor Kostan.
#  GitHub: https://github.com/ikostan
#  LinkedIn: https://www.linkedin.com/in/egor-kostan/


[docs]def gap(num: int) -> int: """ Returns the length of its longest binary gap. The function should return 0 if num doesn't contain a binary gap. :param num: :return: """ binary = "{0:b}".format(num) g_max = g_cur = 0 for i, char in enumerate(binary): if binary[i:].count('1') == 0: break g_cur = calc_g_cur(g_cur, char) g_max = calc_g_max(g_cur, g_max) return g_max
[docs]def calc_g_cur(g_cur, char): """ Calculates g_cur :param g_cur: :param char: :return: """ if char == '0': g_cur += 1 else: g_cur = 0 return g_cur
[docs]def calc_g_max(g_cur, g_max): """ Calculates g_max """ if g_cur > g_max: g_max = g_cur return g_max