Карта Python | Длина самого длинного последовательного 1 в двоичном представлении данного целого числа

| | | | | | | | | | | | | |

Примеры:

Ввод: n = 14 Вывод: 3 Двоичное представление числа 14 равно  111  0. Ввод: n = 222 Вывод: 4 Двоичное представление числа 222 равно 110  1111  0. 

У нас есть решение этой проблемы, см. Длина самого длинного последовательного 1 в двоичном формате . Мы можем быстро исправить эту проблему в Python. Подход очень прост,

  1. преобразование десятичного числа в двоичное с помощью bin() возвращает двоичное представление числа в строковой форме и префиксы 0b.
  2. Разделить все подстроки из последовательных единиц, разделенных нулями, с помощью строки метод split() .
  3. Вывести максимальную длину разделенных подстрок из 1.

# Функция для нахождения длины самой длинной последовательности
# 1 в двоичном формате

def maxConsecutive1 ( input ):

# преобразовать число в двоичный

input = bin ( input )


# удалить первые два символа строки вывода

input = input [ 2 :]

# input.split(' 0 ') - > разбивает все подстроки

# последовательные единицы, разделенные 0, вывод будет

# быть похожим на [' 11 ', ' 1111 ']

# map (len, input.split (' 0 ')) - > map map functions

Функция # len в каждой подстроке последовательного 1

# max() возвращает максимальный элемент в списке

print ( max ( map ( len , input .split ( `0` ))))


# Программа-драйвер

if __ name__ = = `__main__` :

input = 222

maxConsecutive1 ( ввод )

Вывод:

4