Ctrl K

Шаблон с разрешёнными заменами

Сложная
Даны строка text, строка-шаблон pattern и список правил swaps. Правило swaps[i] = [from, to] означает, что символ from в шаблоне можно заменить на символ to. Правило работает только в одну сторону. Замены делаются в шаблоне, по любому числу позиций, но каждую позицию шаблона можно заменить не больше одного раза (цепочки вида a → b → c в одной позиции запрещены). Верните True, если после каких-то замен (возможно, ни одной) шаблон станет непрерывным куском text, иначе False. Регистр букв важен.
Пример 1
text="unitr2d2ok", pattern="rodo", swaps=[["o", "2"], ["d", "x"]] → True

Обе буквы o в шаблоне заменяем на 2 и получаем r2d2 — это кусок текста.

Пример 2
text="abcde", pattern="xcd", swaps=[["b", "x"]] → False

Правило разрешает менять b на x, но не наоборот, поэтому x в шаблоне остаётся x, а такого куска в тексте нет.

Пример 3
text="Q7Q7", pattern="q7", swaps=[["q", "Q"]] → True
Ограничения
  • 1 ≤ len(pattern) ≤ len(text) ≤ 5000
  • 0 ≤ len(swaps) ≤ 1000
  • swaps[i] = [from, to], from ≠ to
  • Все символы — латинские буквы (строчные или заглавные) и цифры
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПодсветить найденное СредняяПодсветка найденных слов СредняяВсе способы расставить пробелы СложнаяСклеить в палиндром СложнаяСемейства слов на один обмен Сложная
загружаем Python…
Вход
text="unitr2d2ok", pattern="rodo", swaps=[["o", "2"], ["d", "x"]]
Ожидается
True

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