Ctrl K

Прейскурант замен букв

Средняя
Даны строки source и target одинаковой длины из строчных латинских букв, а также прейскурант замен: за prices[i] любую букву from_letters[i] можно заменить на букву to_letters[i]. Одна и та же пара букв может встречаться в прейскуранте несколько раз с разными ценами. Замены делаются по одной букве за раз, и к одной позиции их можно применять сколько угодно раз подряд — например, сначала a → c, потом c → b. Верните минимальную стоимость, за которую source можно превратить в target. Если это невозможно, верните -1.
Пример 1
source="cat", target="dog", from_letters=["c", "a", "t", "x"], to_letters=["d", "x", "g", "o"], prices=[3, 1, 4, 2] → 10

c → d за 3, a → x → o за 1 + 2 = 3, t → g за 4. Итого 10.

Пример 2
source="ab", target="ba", from_letters=["a"], to_letters=["b"], prices=[5] → -1

Букву a можно превратить в b, а вот b в a — никак. Ответ -1.

Пример 3
source="zzz", target="zzz", from_letters=["z"], to_letters=["y"], prices=[7] → 0
Ограничения
  • 1 ≤ len(source) = len(target) ≤ 10⁵
  • source и target состоят из строчных латинских букв
  • 1 ≤ len(prices) = len(from_letters) = len(to_letters) ≤ 2000
  • from_letters[i] и to_letters[i] — строчные латинские буквы, from_letters[i] ≠ to_letters[i]
  • 1 ≤ prices[i] ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЦепочки отношений СредняяШарик и лунка СложнаяПравила переписывания фраз СложнаяКратчайший путь катящегося шарика СредняяСовместимы ли равенства букв Средняя
загружаем Python…
Вход
source="cat", target="dog", from_letters=["c", "a", "t", "x"], to_letters=["d", "x", "g", "o"], prices=[3, 1, 4, 2]
Ожидается
10

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