Ctrl K

Звёздочки стирают меньшие буквы

Средняя
Дана строка text из строчных латинских букв и звёздочек *. Звёздочки нужно убрать, обрабатывая их по одной слева направо: каждая звёздочка стирается вместе с одной буквой, стоящей левее неё, — и это должна быть самая маленькая по алфавиту из оставшихся слева букв. Если таких самых маленьких букв несколько, можно стереть любую из них. Выбирайте так, чтобы итоговая строка (когда все звёздочки убраны) была как можно меньше в лексикографическом порядке, и верните её. Гарантируется, что перед каждой звёздочкой к моменту её обработки остаётся хотя бы одна буква.
Пример 1
text="bcab*" → 'bcb'

Звёздочка стирает самую маленькую букву слева — a. Остаётся bcb.

Пример 2
text="cac*a*" → 'cc'

Первая звёздочка стирает a (единственная a слева), получаем cca*. Вторая снова стирает a, остаётся cc.

Пример 3
text="dd*e" → 'de'

Обе d одинаковые, какую ни сотри — получится de.

Ограничения
  • 1 ≤ len(text) ≤ 10⁵
  • text состоит из строчных латинских букв и символов *
  • Каждую звёздочку можно убрать: слева от неё всегда остаётся буква
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБез одинаковых соседей СредняяНаибольшая строка без длинных повторов СредняяПринтер с подносом СредняяЗаполнить пропуски с минимумом повторов СредняяОдинаковые буквы на расстоянии Сложная
загружаем Python…
Вход
text="bcab*"
Ожидается
'bcb'

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