Это вопрос интервью. Предположим, что у вас есть строка text
и dictionary
(набор строк). Как вы разбиваете text
на подстроки, чтобы каждая подстрока находилась в dictionary
.
Например, вы можете разбить "thisisatext"
на ["this", "is", "a", "text"]
с помощью /usr/share/dict/words
.
Я считаю, что откат может решить эту проблему (в псевдо-Java):
void solve(String s, Set<String> dict, List<String> solution) { if (s.length == 0) return for each prefix of s found in dict solve(s without prefix, dict, solution + prefix) } List<String> solution = new List<String>() solve(text, dict, solution)
Имеет ли смысл? Вы бы оптимизировали шаг поиска префиксов в словаре? Какие структуры данных вы бы порекомендовали?