Пройдите строку один раз, считая длину текущей серии и запоминая максимальную. При равных длинах можно возвращать первый найденный символ.
Определение символа с наибольшей последовательной длиной
Пройдите строку один раз, считая длину текущей серии и запоминая максимальную. При равных длинах можно возвращать первый найденный символ.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо определить символ, который встречается в заданной строке подряд максимальное количество раз.
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-кодовых точек.