#include<iostream> #include<cstring> #include<cstdio> using namespace std; typedef long long ll; int tree[500000][27],sum[500000],tot; char a[15]; int insertit() { int len=strlen(a); int root=0; for(int i=0;i<len;i++) { int k=a[i]-'a'; if(tree[root][k]==0) tree[root][k]=++tot; sum[tree[root][k]]++; root=tree[root][k]; } } int findit() { int len=strlen(a); int root=0; for(int i=0;i<len;i++) { int k=a[i]-'a'; if(tree[root][k]==0) return 0; root=tree[root][k]; } return sum[root]; } int main() { int g=0; tot=0; while(gets(a)!=NULL) { if(a[0]=='\0') { g=1; continue; } if(g==0) { insertit(); } else { cout<<findit()<<endl; } } }
字典树前缀出现次数
猜你喜欢
转载自www.cnblogs.com/Leozi/p/10835678.html
今日推荐
周排行