Определение символа с наибольшей последовательной длиной

Пройдите строку один раз, считая длину текущей серии и запоминая максимальную. При равных длинах можно возвращать первый найденный символ.

Короткий ответ

Что ответить на собеседовании

Пройдите строку один раз, считая длину текущей серии и запоминая максимальную. При равных длинах можно возвращать первый найденный символ.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо определить символ, который встречается в заданной строке подряд максимальное количество раз.

def longest_streak_char():
    pass

Пример: "bbccccccbbdd" → c

Ответ

Пройдите строку один раз, считая длину текущей серии и запоминая максимальную. При равных длинах можно возвращать первый найденный символ.

def longest_streak_char(text):
    best = None
    previous = None
    length = maximum = 0
    for char in text:
        length = length + 1 if char == previous else 1
        previous = char
        if length > maximum:
            maximum, best = length, char
    return best

Для bbccccccbbdd максимальная серия состоит из шести c, поэтому результат — 'c'. Пустая строка возвращает None. Строгое сравнение > оставляет первый максимум; замена на >= выбрала бы последний. Время — O(n), дополнительная память — O(1). Считаются символы Python, а не пользовательские графемы из нескольких Unicode-кодовых точек.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее