字典树
字典树
int k = 1;
int trie[1000000][26],col[1000000];
//插入算法
void insert(string& s)
{
int len = s.length(), p = 0;
for (int i = 0; i < len; i++)
{
int c = s[i] - 'a';
if (trie[p][c]==0)
{
trie[p][c] = k;
k++;
}
p = trie[p][c];
}
col[p] = 1;
}
//查找算法
int find(string& s)
{
int len = s.length(), p = 0;
for (int i = 0; i < len; i++)
{
int c = s[i] - 'a';
if (trie[p][c] == 0)
return 0;
else
p = trie[p][c];
}
if (col[p] == 1)
{
return 1;
}
return 0;
}
例题:
P2580 于是他错误的点名开始了 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)