Ctrl K

Выгодная перекодировка отрезка

Средняя
Дана строка digits из цифр — запись большого числа (возможно, с ведущими нулями). Ещё дан массив code длины 10: цифра d при перекодировке превращается в цифру code[d]. Можно выбрать **один** непрерывный отрезок строки и перекодировать каждую цифру в нём. Можно и ничего не перекодировать. Верните строку, которая получится при самом выгодном выборе, то есть задающую наибольшее возможное число.
Пример 1
digits="4721", code=[0, 1, 5, 3, 6, 5, 6, 7, 8, 9] → '6751'

4 → 6 выгодно, 7 → 7 не портит, 2 → 5 выгодно, 1 → 1 не портит: перекодируем всю строку и получаем 6751.

Пример 2
digits="381", code=[0, 9, 2, 1, 4, 5, 6, 7, 3, 9] → '389'

Первая цифра 3 превратилась бы в 1 — плохо. Начинать с 8 тоже нельзя (8 → 3). Перекодируем только последнюю цифру: 1 → 9, получаем 389.

Пример 3
digits="70", code=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] → '70'

Любая перекодировка только уменьшает число, поэтому ничего не меняем.

Ограничения
  • 1 ≤ len(digits) ≤ 10⁵
  • digits состоит только из цифр 0–9
  • len(code) == 10
  • 0 ≤ code[d] ≤ 9
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамое большое число из кусков СредняяНаименьшая последовательность по стрелкам СредняяКольцо из разворачиваемых слов СредняяВычеркнуть столбцы ради порядка СредняяОкруглить цены до нужной суммы Средняя
загружаем Python…
Вход
digits="4721", code=[0, 1, 5, 3, 6, 5, 6, 7, 8, 9]
Ожидается
'6751'

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