Source code for kyu_7.find_the_longest_gap.gap

"""
Solution for -> Find the longest gap!.

Created by Egor Kostan.
GitHub: https://github.com/ikostan
"""


[docs] def gap(num: int) -> int: """ Return the length of its longest binary gap. The function should return 0 if num doesn't contain a binary gap. :param num: :return: """ binary: str = f"{num:b}" 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: int, char: str) -> int: """ Calculate 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: int, g_max: int) -> int: """ Calculate g_max. :param g_cur: :param g_max: :return: """ return max(g_cur, g_max)