









class Trie {
private:
Trie* next[26];
bool isEnd;
public:
Trie(){
isEnd=false;
memset(next,0,sizeof(next));
}
void insert(string word) {
Trie* node=this;
for(char c:word){
if(node->next[c-'a']==nullptr){
node->next[c-'a']=new Trie();
}
node=node->next[c-'a'];
}
node->isEnd=true;
}
bool search(string word) {
Trie* node=this;
for(char c:word){
node=node->next[c-'a'];
if(node==nullptr){
return false;
}
}
return node->isEnd;
}
bool startsWith(string prefix) {
Trie* node=this;
for(char c:prefix){
node=node->next[c-'a'];
if(node==nullptr){
return false;
}
}
return true;
}
};
本文介绍了如何使用C++实现Trie数据结构,包括插入单词、搜索单词是否存在以及判断给定字符串是否为前缀的功能。
434

被折叠的 条评论
为什么被折叠?



