题目链接
构建前缀树(字典树)
这里采用哈希表实现
class Trie
{
public:/** Initialize your data structure here. */Trie(){
}/** Inserts a word into the trie. */void insert(string word){
Trie *node = this;for (auto c : word){
if (!node->next.count(c))node->next[c] = new Trie();node = node->next[c];}node->isword = true;}/** Returns if the word is in the trie. */bool search(string word){
Trie *node = this;for (auto c : word){
if (!node->next.count(c))return false;node = node->next[c];}return node->isword;}/** Returns if there is any word in the trie that starts with the given prefix. */bool startsWith(string prefix){
Trie *node = this;for (auto c : prefix){
if (!node->next.count(c))return false;node = node->next[c];}return true;}private:map<char, Trie *> next = {
};bool isword = false;
};