Description
Input
Output
Sample Input
banana band bee absolute acm ba b band abc
Sample Output
2 3 1 0
解题思路:
本题是典型的字典树题目,按照字典树的建树,查询即可的出结果。
代码如下:C/C++代码
#include<stdio.h>
#include<string.h>
int sz=1,val[1000000]={0},ch[1000000][27]={0};
//建立字典树
void insert(char *s)
{
int u=0,i,c,len=strlen(s);
for(i=0;i<len;i++)
{
c=s[i]-'a';
if(!ch[u][c])
ch[u][c]=sz++;
u=ch[u][c];
val[u]++;
}
}
//查询字符串
int query(char *s)
{
int u=0,i,c,len=strlen(s);
for(i=0;i<len;i++)
{
c=s[i]-'a';
if(!ch[u][c])
return 0;
u=ch[u][c];
}
return val[u];
}
int main()
{
char s[30];
//控制输入结束的操作
for(;gets(s);)
{
if(strlen(s)==0)
break;
insert(s);
}
while(scanf("%s",s)!=EOF)
{
printf("%d\n",query(s));
}
return 0;
}
原文:http://blog.csdn.net/yanghuaqings/article/details/38435511