/*
字典树的板子,
insert表示原字符串,
find表示在是否在原字符串中是否存在这样的一个字符串,或者前缀也可以验证
(不然直接一个map或者hash就过了)
*/
struct Trie {
int nex[maxn][26], cnt;
bool exist[maxn]; // 该结点结尾的字符串是否存在
void insert(char *s, int l) { // 插入字符串
int p = 0;
for (int i = 0; i < l; i++) {
int c = s[i] - 'a';
if (!nex[p][c]) nex[p][c] = ++cnt; // 如果没有,就添加结点
p = nex[p][c];
}
exist[p] = 1;
}
bool find(char *s, int l) { // 查找字符串
int p = 0;
for (int i = 0; i < l; i++) {
int c = s[i] - 'a';
if (!nex[p][c]) return 0;
p = nex[p][c];
}
return exist[p];
}
}trie;
字典树板子
最新推荐文章于 2025-01-18 17:55:10 发布
本文详细介绍了字典树(Trie)的数据结构,包括其插入(insert)和查找(find)操作的具体实现。通过示例代码,展示了如何利用字典树进行字符串的高效存储和检索,适用于需要频繁进行字符串匹配的场景。
1644

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



