Trie树模板
作者:
hello._
,
2025-04-11 10:10:14
· 山西
,
所有人可见
,
阅读 2
#include <cstdio>
using namespace std;
const int N = 100010;
int trie[N][26], idx;
int cnt[N];
char str[N];
void insert();
int query();
int main(void)
{
int n;
scanf("%d", &n);
char op[2];
while(n --)
{
scanf("%s %s", op, str);
if(op[0] == 'I') insert();
else printf("%d\n", query());
}
return 0;
}
void insert()
{
int level = 0;
for(int i = 0; str[i]; i ++)
{
int site = str[i] - 'a';
if(!trie[level][site]) trie[level][site] = ++ idx;
level = trie[level][site];
}
cnt[level] ++;
}
int query()
{
int level = 0;
for(int i = 0; str[i]; i ++)
{
int site = str[i] - 'a';
if(!trie[level][site]) return 0;
level = trie[level][site];
}
return cnt[level];
}