Ctrl K

Буквы a, b и c с двух концов

Средняя
Дана строка letters из букв a, b и c и неотрицательное число need. За один ход можно забрать из строки либо крайнюю левую, либо крайнюю правую букву. Верните наименьшее число ходов, после которого у вас будет не меньше need букв каждого из трёх видов. Если это невозможно, верните -1.
Пример 1
letters="cabbacca", need=1 → 3

Берём c, a, b слева — три буквы, и у нас уже есть по одной каждой. Быстрее не выйдет: нужно хотя бы три буквы.

Пример 2
letters="abaacbc", need=2 → 6

Две буквы слева (a, b) и три справа (c, b, c) дают две b и две c, но лишь одну a, поэтому нужна ещё одна буква слева: всего 6.

Пример 3
letters="aabba", need=1 → -1

Буквы c в строке нет, поэтому ответ -1.

Ограничения
  • 1 ≤ len(letters) ≤ 10⁵
  • letters состоит только из букв a, b, c
  • 0 ≤ need ≤ len(letters)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный фрагмент без повторов СредняяОтрезок из двух букв СредняяПовторяющиеся участки гена СредняяОкно с ограниченным набором букв СредняяКаждая буква не реже k раз Средняя
загружаем Python…
Вход
letters="cabbacca", need=1
Ожидается
3

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