Примеры:
Ввод: n = 14 Вывод: 3 Двоичное представление числа 14 равно 111 0. Ввод: n = 222 Вывод: 4 Двоичное представление числа 222 равно 110 1111 0.
У нас есть решение этой проблемы, см. Длина самого длинного последовательного 1 в двоичном формате . Мы можем быстро исправить эту проблему в Python. Подход очень прост,
- преобразование десятичного числа в двоичное с помощью bin() возвращает двоичное представление числа в строковой форме и префиксы 0b.
- Разделить все подстроки из последовательных единиц, разделенных нулями, с помощью строки метод split() .
- Вывести максимальную длину разделенных подстрок из 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