Ctrl K

Склеенные фразы

Средняя
Дан список фраз phrases. Каждая фраза состоит из слов из строчных латинских букв, разделённых одиночными пробелами; пробелов в начале и в конце нет. Две фразы можно склеить, если последнее слово первой совпадает с первым словом второй: общее слово пишется один раз, например «green tea» и «tea party» дают «green tea party». Переберите все упорядоченные пары фраз с разными индексами i и j (порядок важен: склейка i с j и j с i — разные варианты) и верните все различные склейки, отсортированные лексикографически.
Пример 1
phrases=['green tea', 'tea party', 'party time', 'big green'] → ['big green tea', 'green tea party', 'tea party time']

«green tea» заканчивается словом tea, а «tea party» с него начинается — получаем «green tea party». Так же склеиваются «tea party» + «party time» и «big green» + «green tea».

Пример 2
phrases=['go', 'go', 'stop'] → ['go']

Две разные фразы «go» склеиваются в «go» (общее слово пишется один раз), причём в обоих порядках — но в ответе одна строка, повторы убираются.

Пример 3
phrases=['sun rises', 'moon sets'] → []

Ни одна фраза не начинается с последнего слова другой, поэтому ответ пустой.

Ограничения
  • 1 ≤ len(phrases) ≤ 100
  • 1 ≤ len(phrases[i]) ≤ 100
  • phrases[i] состоит из строчных латинских букв и одиночных пробелов, без пробелов по краям
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазложить анаграммы по группам СредняяПодпоследовательность только одного слова СредняяСамые частые запросы СредняяСлово, выращенное по букве СредняяСклеить карточки контактов Средняя
загружаем Python…
Вход
phrases=['green tea', 'tea party', 'party time', 'big green']
Ожидается
['big green tea', 'green tea party', 'tea party time']

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