<!-- lang: cpp -->
#include<iostream>
using namespace std;
struct zidian
{
zidian *cha[26];
int num;
zidian (){int i;for (i=0;i<26;i++)cha[i]=NULL;num=0;}
};
zidian *head;
int find(char word[])
{
int i;
zidian *p=head;
for (i=0;i<strlen(word);i++)
{
if (p->cha[word[i]-'a']==NULL)
return 0;
p=p->cha[word[i]-'a'];
}
return p->num;
}
void insert(char word[])
{
zidian *p=head,*s;
int i;
for (i=0;i<strlen(word);i++)
{
if (p->cha[word[i]-'a']==NULL)
{
s=new zidian;
p->cha[word[i]-'a']=s;
}
p=p->cha[word[i]-'a'];
p->num++;
}
}
int main()
{
head=new zidian;
char word[1000];
while (gets(word) && word[0]-'a'>=0)
insert(word);
while (cin>>word)
cout<<find(word)<<endl;
return 0;
}
转载于:https://my.oschina.net/fzyz999/blog/144184