Итак, я сделал трюк, который содержит довольно большой объем данных, мой алгоритм поиска довольно быстр, но я хотел посмотреть, есть ли у кого-нибудь представление о том, как я мог бы сделать это быстрее.C++ Trie search performance
bool search (string word)
{
int wordLength = word.length();
node *current = head;
for (unsigned int i=0; i<wordLength; ++i)
{
if (current->child[((int)word[i]+(int)'a')] == NULL)
return false;
else
current = current->child[((int)word[i]+(int)'a')];
}
return current->is_end;
}
Я использую + (int) a, потому что есть символы со значениями ниже –
@that_guy: в этом случае вы не должны добавлять ничего в слово [i] '. Определите допустимый диапазон и (необязательно) сдвиньте диапазон, чтобы начать с нуля, вычитая наименьшее значение в диапазоне от слова «i». – tom