Учитывая строку букв и набор слов, выведите порядок слов, чтобы их можно было найти в строке, отбрасывая ненужные буквы. Слова могут встречаться более одного раза в наборе слов. Строка ввода и все слова будут состоять из 1 до 1000 строчных букв каждая. Буквы, которые нужно отбросить, могут встречаться внутри слов или между словами.
Ваша программа или функция может принимать буквенную строку и слова в виде списков, строки или из STDIN и должна выводить все слова в правильном порядке в виде вывода списка или строки. Если существует более одного правильного решения, выведите только одно из них. Если нет правильного решения, выведите пустой список или пустую строку.
Примеры:
dogcatfrog cat frog dog
-> dog cat frog
xxcatfixsxhingonxgrapexxxfishingcxat cat grape catfish fishing
-> catfish grape fishing cat
dababbabadbaccbcbaaacdacdbdd aa bb cc dd ba ba ba ab ac da db dc
-> da ab ba ba ba cc bb aa ac dc db dd
flea antelope
->
(no solution)
Это код гольф. Наименьшее количество байтов побеждает.
Изменить: Объяснил, что дополнительные символы могут быть внутри слов.
ccраньше, bbно подстроки bbи ccпоявляются только один раз, а bbподстрока появляется первой.
ccbcbчасти строки мы выводим вывод ccthen bbпосле удаления середины c.