字典树,英文名 trie。顾名思义,就是一个像字典一样的树。
常用模板:
const int N=1e5+10; //注意: N的大小是所有的字符串的总长度,因为最坏的情况下是一个字符就是一个结点
int son[N][26],cnt[N],idx;
void insert(string s)//插入
{
int p=0;
for(int i=0;i<s.size();i++)
{
int u=s[i]-'a';
if(!son[p][u]) son[p][u]=++idx;
p=son[p][u];
}
cnt[p]++;
}
int query(string s)//查找
{
int p=0;
for(int i=0;i<s.size();i++)
{
int u=s[i]-'a';
if(!son[p][u]) return 0;
p=son[p][u];
}
return cnt[p];
}
本文介绍了字典树(Trie)的基本概念和常见用途,提供了一个插入和查询字符串的模板代码。通过这个模板,可以高效地进行字符串统计和查找操作。在数据结构和算法的学习中,字典树是一种重要的字符串处理工具,尤其适用于解决字符串集合的搜索和统计问题。
781

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



