Проверьте, можно ли сформировать строки в списке путем объединения элементов в одном списке
Например:
Список ввода -
{ best, rockstar, star, guide, bestguide, rock }
Вывод: -
rockstar -> rock, star
bestguide -> best, guide
Здесь «рок-звезда» может быть сформирована из камня и звезды. Точно так же «bestguide» можно сформировать, соединив «best» и «guide».
Решение, которое у меня есть, - создать все комбинации строк, соединив друг друга (2 строки вместе, 3 строки вместе и т. Д. ) и сохраните на карте.
структура карты может выглядеть следующим образом:
Map<String, List<String>>
{rockstar : [rock, star], ....}
Теперь проверьте только обход исходного списка и отметьте карту. Если он найден, то это одно из возможных решений.
В поисках лучшего решения с лучшей сложностью времени / пространства