Это интервью вопрос : Найти все (английские слова) подстроки данной строки. (каждый = каждый, всегда, очень).
Очевидно, что мы можем перебрать все подстроки и сравнить каждую из них со словарем английского языка, организованным как набор. Я считаю, что словарь достаточно мал, чтобы соответствовать оперативной памяти. Как организовать словарь? Насколько я помню, оригинальная команда spell
загружала файл words
в bitmap
, представлял собой набор хэш-значений слов. Я бы начал с этого.
Другое решение - trie
, построенное из словаря. Используя три, мы можем перебрать все строковые символы и проверить trie
для каждого символа. Я предполагаю, что сложность этого решения будет одинаковой в худшем случае (O(n^2)
)
Имеет ли это смысл? Вы бы предложили другие решения?