Ctrl K

Разбиение на слова из словаря

Средняя
Дана строка text без пробелов и словарь vocabulary — список различных слов. Определите, можно ли разрезать text на один или несколько последовательных кусков так, чтобы каждый кусок совпадал с каким-нибудь словом из словаря. Одно и то же слово разрешается использовать сколько угодно раз, а какие-то слова можно не использовать вовсе. Верните True, если такое разбиение существует, и False иначе.
Пример 1
text='sunflowerseed', vocabulary=['sunflow', 'ers', 'sun', 'flower', 'seed'] → True

Начало «sunflow» ведёт в тупик: после «sunflow» + «ers» остаётся «eed», а его не разбить. Зато подходит «sun» + «flower» + «seed».

Пример 2
text='aaab', vocabulary=['a', 'aa'] → False

Ни одно слово словаря не содержит букву b, поэтому разбить строку нельзя.

Пример 3
text='abab', vocabulary=['ab'] → True

Одно и то же слово можно брать несколько раз: «ab» + «ab».

Ограничения
  • 1 ≤ text.length ≤ 300
  • 1 ≤ vocabulary.length ≤ 1000
  • 1 ≤ vocabulary[i].length ≤ 20
  • text и vocabulary[i] состоят только из строчных латинских букв
  • Все слова в vocabulary различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВсе способы расставить пробелы СложнаяСлова, спрятанные в тексте СредняяМеньше всего лишних букв СредняяПодсветить найденное СредняяСократить слова до корней Средняя
загружаем Python…
Вход
text='sunflowerseed', vocabulary=['sunflow', 'ers', 'sun', 'flower', 'seed']
Ожидается
True

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