Ctrl K

Слова из словаря в тексте

Лёгкая
Дана строка text и список различных слов vocabulary. Найдите все места, где слово из словаря встречается в text как подстрока. Каждое вхождение опишите парой [i, j] — индексами первой и последней буквы (нумерация с нуля, оба конца включительно). Вхождения могут перекрываться и вкладываться друг в друга. Верните список пар, отсортированный по i, а при равных i — по j.
Пример 1
text="sunflower", vocabulary=["sun", "flow", "flower", "low"] → [[0, 2], [3, 6], [3, 8], [4, 6]]

"sun" занимает позиции 0–2, "flow" — 3–6, "flower" — 3–8, "low" — 4–6. Пары с одинаковым началом идут по возрастанию конца.

Пример 2
text="aaa", vocabulary=["aa", "b"] → [[0, 1], [1, 2]]

Вхождения могут перекрываться: "aa" встречается с позиции 0 и с позиции 1. "b" не встречается вовсе.

Ограничения
  • 1 ≤ len(text) ≤ 100
  • 1 ≤ len(vocabulary) ≤ 20
  • 1 ≤ длина каждого слова ≤ 50
  • Все строки состоят из строчных латинских букв
  • Слова в vocabulary различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиНи один номер не начинает другой ЛёгкаяРазличимые сокращения слов СложнаяСамые частые запросы СредняяСлово, выращенное по букве СредняяСлова, спрятанные в тексте Средняя
загружаем Python…
Вход
text="sunflower", vocabulary=["sun", "flow", "flower", "low"]
Ожидается
[[0, 2], [3, 6], [3, 8], [4, 6]]

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