Ctrl K

Правки по позициям

Средняя
Редактор получил строку text и пачку правок. Правка номер i описана тремя значениями: позицией positions[i] (нумерация с нуля), ожидаемым фрагментом expected[i] и новым фрагментом replacements[i]. Правка применяется, только если в исходной строке text начиная с позиции positions[i] действительно записан фрагмент expected[i]. Тогда этот фрагмент заменяется на replacements[i]. Если фрагмент не совпал (или не помещается в строку), правка пропускается. Все правки применяются одновременно: позиции всегда относятся к исходной строке, а не к уже изменённой. Гарантируется, что фрагменты применимых правок не пересекаются. Верните строку после всех правок.
Пример 1
text="sunnyday", positions=[0, 5], expected=["sun", "day"], replacements=["fun", "night"] → 'funnynight'

Обе правки подходят: на позиции 0 стоит «sun», на позиции 5 — «day». Получаем «fun» + «ny» + «night».

Пример 2
text="overflow", positions=[4, 0], expected=["flaw", "ov"], replacements=["x", "und"] → 'underflow'

На позиции 4 стоит «flow», а не «flaw», поэтому первая правка пропускается. Вторая подходит: «ov» меняется на «und».

Пример 3
text="abc", positions=[2], expected=["cd"], replacements=["z"] → 'abc'
Ограничения
  • 1 ≤ len(text) ≤ 1000
  • 1 ≤ len(positions) = len(expected) = len(replacements) ≤ 100
  • 0 ≤ positions[i] < len(text)
  • 1 ≤ len(expected[i]), len(replacements[i]) ≤ 50
  • text и expected[i] состоят из строчных латинских букв
  • replacements[i] состоят из латинских букв и цифр
  • Фрагменты применимых правок не пересекаются
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазложить анаграммы по группам СредняяПодпоследовательность только одного слова СредняяСамые частые запросы СредняяСлово, выращенное по букве СредняяСклеить карточки контактов Средняя
загружаем Python…
Вход
text="sunnyday", positions=[0, 5], expected=["sun", "day"], replacements=["fun", "night"]
Ожидается
'funnynight'

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