Ctrl K

Подсветка найденных слов

Средняя
Поисковик подсвечивает в тексте найденные слова. Дан список ключевых слов keywords и строка text. Каждый символ text, который входит хотя бы в одно вхождение какого-нибудь ключевого слова, должен оказаться внутри тегов <b> и </b>. Вхождения могут пересекаться. Тегов должно быть как можно меньше: если выделенные куски перекрываются или стоят вплотную друг к другу, их нужно объединить в один кусок с одной парой тегов. Символы, не входящие ни в одно вхождение, остаются вне тегов. Верните получившуюся строку.
Пример 1
keywords=["sun", "set"], text="sunset over the sea" → '<b>sunset</b> over the sea'

Вхождения sun и set стоят вплотную друг к другу, поэтому их выделяет одна общая пара тегов.

Пример 2
keywords=["ana", "nab"], text="bananabread" → 'b<b>ananab</b>read'

ana встречается с позиций 1 и 3, nab — с позиции 4. Вместе они покрывают символы с 1 по 6 — это один выделенный кусок.

Пример 3
keywords=["tea"], text="coffee" → 'coffee'

Ключевое слово не встречается, строка возвращается без изменений.

Ограничения
  • 1 ≤ len(text) ≤ 500
  • 0 ≤ len(keywords) ≤ 50
  • 1 ≤ len(keywords[i]) ≤ 10
  • text состоит из строчных латинских букв и пробелов, keywords[i] — из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПодсветить найденное СредняяРазбиение на слова из словаря СредняяСократить слова до корней СредняяСамые частые запросы СредняяСлово, выращенное по букве Средняя
загружаем Python…
Вход
keywords=["sun", "set"], text="sunset over the sea"
Ожидается
'<b>sunset</b> over the sea'

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