Ctrl K

Каждое начало — тоже слово

Средняя
Дан список слов words. Назовём слово *полным*, если каждое его непустое начало (включая само слово) тоже встречается в words. Например, при words = ['b', 'bo', 'box'] слово box полное: b, bo и box есть в списке. Верните самое длинное полное слово. Если таких слов одинаковой длины несколько, верните наименьшее в алфавитном порядке. Если полных слов нет, верните пустую строку.
Пример 1
words=['t', 'te', 'tea', 'team', 'teal', 'ten'] → 'teal'

У team и teal все начала (t, te, tea) есть в списке. Обе длины 4, алфавитно меньше teal.

Пример 2
words=['dog', 'do', 'cat'] → ''

Однобуквенных слов нет, так что ни одно слово не подходит.

Пример 3
words=['q', 'qu', 'quiz', 'x'] → 'qu'

У quiz нет начала qui, поэтому лучший ответ — qu.

Ограничения
  • 1 ≤ len(words) ≤ 10⁵
  • 1 ≤ len(words[i])
  • Суммарная длина всех слов не больше 10⁵
  • Слова состоят только из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЧисла в словарном порядке СредняяТолько внешние папки СредняяСлова из других слов СложнаяЛучший XOR по цепочке начальников СложнаяXOR двух непересекающихся поддеревьев Сложная
загружаем Python…
Вход
words=['t', 'te', 'tea', 'team', 'teal', 'ten']
Ожидается
'teal'

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