Ctrl K

Самый ценный кусок текста

Средняя
Дана строка text. Каждая строчная латинская буква чего-то стоит: по умолчанию — свой номер в алфавите (a стоит 1, b — 2, …, z — 26). Но для букв из строки letters цена переопределена: буква letters[i] стоит scores[i] (цена может быть отрицательной). Стоимость куска текста — сумма стоимостей его букв; у пустого куска стоимость 0. Найдите наибольшую стоимость среди всех непрерывных кусков text, включая пустой.
Пример 1
text="hello", letters="l", scores=[-3] → 22

Буквы стоят 8, 5, −3, −3 и 15. Всё слово целиком даёт 8 + 5 − 3 − 3 + 15 = 22, и это лучше любого куска.

Пример 2
text="cab", letters="abc", scores=[-1, -2, -3] → 0

Все буквы отрицательные, поэтому выгоднее всего взять пустой кусок со стоимостью 0.

Ограничения
  • 1 ≤ len(text) ≤ 10⁵
  • text и letters состоят из строчных латинских букв
  • 1 ≤ len(letters) ≤ 26, все буквы в letters различны
  • len(scores) = len(letters)
  • -1000 ≤ scores[i] ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазбиение на слова из словаря СредняяСлова, спрятанные в тексте СредняяСлово растёт по букве СредняяМеньше всего лишних букв СредняяЛишние буквы под пометкой Средняя
загружаем Python…
Вход
text="hello", letters="l", scores=[-3]
Ожидается
22

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