没啥可讲的,就是一个对于大量字符串及其前缀的快速储存和查找的数据结构。
在时间复杂度上比map要小得多。
直接上模板:
struct node
{
int num,next[26];
}trie[500005];
int tot=1;
void inser(string c)//建树
{
int len=c.size(),p=1;
for(int i=0;i<len;i++)
{
int t=c[i]-'a';
if(trie[p].next[t]==0)
{
tot++;
trie[p].next[t]=tot;
p=trie[p].next[t];
}
else
{
p=trie[p].next[t];
}
}
}
void fi(string c)//查找
{
int len=c.size(),p=1,ans=0;
for(int i=0;i<len;i++)
{
int t=c[i]-'a';
p=trie[p].next[t];
}
}