Ctrl K

Лучшее совпадение по окончанию

Сложная
Даны словарь catalog и список запросов queries. Для каждого запроса queries[i] найдите в catalog слово с самым длинным общим окончанием (суффиксом) с запросом. Если таких слов несколько, выберите самое короткое из них, а если и по длине есть ничья — то, что стоит в catalog раньше. Общее окончание может быть пустым — тогда претендуют все слова каталога. Верните массив, где i-й элемент — индекс выбранного слова в catalog для queries[i].
Пример 1
catalog=["station", "nation", "ion"], queries=["motion", "nation", "cat"] → [1, 1, 2]

motion делит окончание tion и со station, и с nation — берём более короткое nation (индекс 1). nation совпадает с nation целиком (1). У cat общего окончания нет ни с кем, поэтому подходят все, и выигрывает самое короткое ion (2).

Пример 2
catalog=["dog", "log", "fog"], queries=["frog", "dg"] → [0, 0]

Во всех случаях слова каталога равны по общему окончанию и по длине, поэтому берём самое раннее — индекс 0.

Ограничения
  • 1 ≤ len(catalog), len(queries) ≤ 10⁴
  • 1 ≤ len(catalog[i]), len(queries[i]) ≤ 5000
  • Суммарная длина слов в catalog не больше 5 · 10⁵, в queries — тоже
  • Все слова состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВсе способы расставить пробелы СложнаяСлова в буквенной сетке СложнаяСклеить в палиндром СложнаяЗеркальные блоки из слов СложнаяСлова из других слов Сложная
загружаем Python…
Вход
catalog=["station", "nation", "ion"], queries=["motion", "nation", "cat"]
Ожидается
[1, 1, 2]

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