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