Ctrl K

Цель из начал слов

Средняя
Дан список слов vocab и строка target. Куском назовём любую непустую строку, которая является началом (префиксом) хотя бы одного слова из vocab; само слово целиком тоже годится. Склейте target из кусков, используя их как можно меньше (один и тот же кусок можно брать много раз). Верните наименьшее число кусков или -1, если собрать target нельзя.
Пример 1
vocab=["sun", "flower"], target="sunflow" → 2

sun — начало слова sun, flow — начало слова flower: два куска.

Пример 2
vocab=["abc", "b"], target="abab" → 2

ab + ab: оба куска — начало слова abc.

Пример 3
vocab=["cat"], target="dog" → -1

Ни одно слово не начинается на d.

Ограничения
  • 1 ≤ len(vocab) ≤ 100
  • 1 ≤ len(vocab[i]) ≤ 5000
  • Суммарная длина слов в vocab не больше 10⁵
  • 1 ≤ len(target) ≤ 5000
  • Все строки состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиФраза из начал слов: длинная версия СложнаяСлова-обложки ЛёгкаяСлова-рамки СложнаяСамый длинный общий кусок СредняяСлова, спрятанные в тексте Средняя
загружаем Python…
Вход
vocab=["sun", "flower"], target="sunflow"
Ожидается
2

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