Я реализовал базовое дерево префиксов или "Trie". Три состоит из таких узлов:
// pseudo-code
struct node {
char c;
collection<node> childnodes;
};
Скажите, что я добавил следующие слова в свой список: "Яблоко", "Ковчег" и "Кошка". Теперь, когда я смотрю префиксы типа «Ap» и «Ca», мой метод «bool containsPrefix (string prefix)» моего trie корректно вернет true.
Теперь я реализую метод "bool containsWholeWord (string word)", который будет возвращать true для "Cat" и "Ark", но false для "App" (в приведенном выше примере).
Обычно узлы в дереве имеют какой-то флаг "endOfWord"? Это поможет определить, была ли искомая строка целым словом, введенным в дерево, а не просто префикс.
Ура!