Ctrl K

Очки за удаление «ab» и «ba»

Средняя
Дана строка text и два числа ab_points и ba_points. Сколько угодно раз можно делать одно из двух действий: - удалить из строки подстроку "ab" (две соседние буквы) и получить ab_points очков; - удалить подстроку "ba" и получить ba_points очков. После удаления оставшиеся части строки склеиваются, и могут появиться новые пары. Верните наибольшее число очков, которое можно набрать.
Пример 1
text='xbabyab', ab_points=3, ba_points=1 → 6

В «bab» можно убрать либо «ba», либо «ab» — берём «ab» за 3 очка. Затем убираем «ab» в конце ещё за 3. Итого 6.

Пример 2
text='bbaa', ab_points=10, ba_points=1 → 2

Пары «ab» в строке нет. Убираем «ba» из середины, получаем «ba» и убираем его тоже: 1 + 1 = 2.

Ограничения
  • 1 ≤ text.length ≤ 10⁵
  • text состоит из строчных латинских букв
  • 1 ≤ ab_points, ba_points ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКаждая буква по разу СредняяВычеркнуть цифры ради минимума СредняяНаименьшая последовательность по стрелкам СредняяСкобки со звёздочками СредняяСколько скобок дописать Средняя
загружаем Python…
Вход
text='xbabyab', ab_points=3, ba_points=1
Ожидается
6

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