Ctrl K

Цифры кусками не больше предела

Средняя
Дана строка digits из цифр от 1 до 9 и число cap. Разрежьте строку на подряд идущие куски; значение куска — это число, которое он записывает (например, у куска "35" значение 35). Значение каждого куска должно быть не больше cap. Верните наименьшее возможное число кусков, а если так разрезать нельзя — -1.
Пример 1
digits="381927", cap=50 → 3

Например, "38", "19", "27": все значения не больше 50. За два куска не выйдет — тогда хотя бы один кусок трёхзначный.

Пример 2
digits="472", cap=6 → -1

Цифра 7 больше 6 сама по себе, поэтому разрезать нельзя.

Пример 3
digits="1111", cap=1111 → 1
Ограничения
  • 1 ≤ len(digits) ≤ 10⁵
  • Каждый символ digits — цифра от 1 до 9
  • 1 ≤ cap ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСкобки со звёздочками СредняяНитка бус без повторов СредняяЧередование после прокрутки СредняяКолодцы рядом с домами СредняяДвоичное число не больше порога Средняя
загружаем Python…
Вход
digits="381927", cap=50
Ожидается
3

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