Ctrl K

Подгонка куска строки в рамках бюджета

Средняя
Даны две строки одинаковой длины source и target и целое число budget. Мы хотим, чтобы какой-нибудь непрерывный кусок source совпал с куском target на тех же позициях. Заменить букву source[i] на target[i] стоит |source[i] - target[i]| — разница кодов этих букв (если буквы уже равны, замена бесплатна). Верните наибольшую длину куска, который можно так подогнать, потратив в сумме не больше budget. Если не выйдет ни для одной позиции, верните 0.
Пример 1
source="kayak", target="kbybk", budget=2 → 5

Буквы отличаются в позициях 1 и 3: a→b дважды по 1. Всё слово обходится ровно в 2 — в бюджет укладываемся, ответ 5.

Пример 2
source="hello", target="hallo", budget=3 → 3

Замена e→a стоит 4 и в бюджет не влезает. Самый длинный кусок без позиции 1 — llo (позиции 2–4), там всё уже совпадает, длина 3.

Пример 3
source="abc", target="xyz", budget=10 → 0

Каждая замена стоит 23, даже одну букву поправить не получится — ответ 0.

Ограничения
  • 1 ≤ len(source) ≤ 10⁵
  • len(target) == len(source)
  • 0 ≤ budget ≤ 10⁶
  • source и target состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамая длинная серия одинаковых ответов СредняяМало нулей или мало единиц: запросы на отрезках СложнаяСамый короткий рывок СредняяОтрезки с маленьким произведением СредняяСамая длинная серия единиц с k правками Средняя
загружаем Python…
Вход
source="kayak", target="kbybk", budget=2
Ожидается
5

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