AcWing 835. Trie树
原题链接
简单
作者:
想养一只皮卡丘
,
2020-10-23 16:36:16
,
所有人可见
,
阅读 326
#include <iostream>
#include <cstring>
using namespace std;
const int N = 100010;
int son[N][26];
int cnt[N];
int tot=1;
char str[N];
void insert(char* str){
int len=strlen(str),p=1;
for(int k=0;k<len;k++)
{
int u=str[k]-'a';
if(son[p][u]==0) son[p][u]=++tot;
p=son[p][u];
}
cnt[p]++;
}
int search(char* str){ //蓝皮书这里是bool,但此题应该用int
int len=strlen(str);
int p=1;
for(int k=0;k<len;k++)
{
int u=str[k]-'a';
if(son[p][u]==0) return 0;
p=son[p][u];
}
return cnt[p];
}
int main()
{
int n;
cin>>n;
char x;
while (n--)
{
cin>>x>>str;
if (x == 'I') insert(str);
else cout<<search(str)<<endl;
}
return 0;
}