#include<cstdio>
#include<string.h>
#include<iostream>
using namespace std;
struct node{
int sum;
node *next[26];
}root;
void insert(char *s)
{
node *p=&root,*q;
int i,j,l;
l=strlen(s);
for(i=0;i<l;i++)
{
if(p->next[s[i]-'a']==NULL)
{
q=new node;
q->sum=1;
for(j=0;j<26;j++)
q->next[j]=NULL;
p->next[s[i]-'a']=q;
}
else
p->next[s[i]-'a']->sum++;
p=p->next[s[i]-'a'];
}
}
int search(char *s)
{
node *p=&root;
int i,l;
l=strlen(s);
for(i=0;i<l;i++)
{
if(p->next[s[i]-'a']==NULL)
return 0;
p=p->next[s[i]-'a'];
}
return p->sum;
}
int main(void)
{
int i,j,k;
root.sum=0;
for(i=0;i<26;i++)
root.next[i]=NULL;
char s[20];
while(1)
{
gets(s);
if(strcmp(s,"")==0)
break;
insert(s);
}
while(cin>>s)
cout<<search(s)<<endl;
return 0;
}
Tire树模板
最新推荐文章于 2021-10-23 01:32:06 发布