Ctrl K

Следующая буква по кругу

Лёгкая
На ячейках склада висят таблички с буквами, и их список labels отсортирован по алфавиту (буквы могут повторяться, но различных букв хотя бы две). Дана буква after. Верните наименьшую букву из labels, которая строго больше after по алфавиту. Если такой нет, счёт идёт по кругу — верните первую букву списка. Список уже отсортирован — попробуйте найти ответ быстрее, чем перебором.
Пример 1
labels=['b', 'e', 'e', 'k', 'q'], after='e' → 'k'

Буква «e» сама не подходит — нужна строго большая. Ближайшая следующая — «k».

Пример 2
labels=['d', 'h', 'm'], after='a' → 'd'

Все буквы больше «a», наименьшая из них — «d».

Пример 3
labels=['c', 'c', 'w'], after='y' → 'c'

Больше «y» ничего нет, поэтому переходим в начало и возвращаем первую букву — «c».

Ограничения
  • 2 ≤ len(labels) ≤ 10⁴
  • labels[i] и after — строчные латинские буквы
  • labels отсортирован по неубыванию
  • В labels есть хотя бы две различные буквы
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиМесто на отсортированной полке ЛёгкаяПотерянный билет ЛёгкаяЗначения в обоих списках ЛёгкаяОбщие значения с повторами ЛёгкаяПоиск в упорядоченном списке Лёгкая
загружаем Python…
Вход
labels=['b', 'e', 'e', 'k', 'q'], after='e'
Ожидается
'k'

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 80 тестов на сервере, включая скрытые.