更快的方法应该是字典树,不用处理前缀。
AC代码:
#include<iostream>
#include<cstring>
#include<string>
#include<map>
using namespace std;
map<string,int>ha;
void add(char *s){
char ss[20];
int n=strlen(s);
for(int i=0;i<n;++i){
ss[i]=s[i];
ss[i+1]='\0';
if(!ha.count(string(ss))) ha[string(ss)]=1;
else ++ha[string(ss)];
}
}
int main(){
char ch[20];
while(1){
fgets(ch,sizeof(ch),stdin);
if(ch[0]=='\n') break;
add(ch);
}
string s;
while(cin>>s){
if(!ha.count(s)) printf("0\n");
else printf("%d\n",ha[s]);
}
return 0;
}
如有不当之处欢迎指出!