Ctrl K

Наименьшая последовательность по стрелкам

Средняя
Строка pattern длины n состоит из букв I и D и описывает, как меняется последовательность из n + 1 чисел: pattern[i] == 'I' значит, что следующее число больше текущего, а pattern[i] == 'D' — что меньше. Составьте из чисел 1, 2, …, n + 1 (каждое ровно по разу) последовательность, которая следует этому шаблону, и верните лексикографически наименьшую из подходящих.
Пример 1
pattern="IDD" → [1, 4, 3, 2]

Нужно: вверх, вниз, вниз. Подходят, например, [1, 4, 3, 2] и [2, 4, 3, 1]; лексикографически меньше первая.

Пример 2
pattern="DID" → [2, 1, 4, 3]

Сначала спуск: меньше всего начать с 2 и сойти на 1, затем подняться на 4 и спуститься на 3.

Пример 3
pattern="II" → [1, 2, 3]
Ограничения
  • 1 ≤ len(pattern) ≤ 10⁵
  • pattern[i] — I или D
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамое большое число из кусков СредняяКаждая буква по разу СредняяВычеркнуть цифры ради минимума СредняяКольцо из разворачиваемых слов СредняяПерестроить середину шеренги Средняя
загружаем Python…
Вход
pattern="IDD"
Ожидается
[1, 4, 3, 2]

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