AcWing 142. 前缀统计
原题链接
简单
作者:
吴鑫
,
2021-03-13 10:31:18
,
所有人可见
,
阅读 341
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int son[N][26],cut[N],idx;
int n,m,ans;
void insert(string a){
int p=0;
for(int i=0;i<a.size();i++){
int u=a[i]-'a';
if(!son[p][u]) son[p][u]=++idx;
p=son[p][u];
}
cut[p]++;
}
void query(string a){
int p=0;
for(int i=0;i<a.size();i++){
int u=a[i]-'a';
if(!son[p][u]) return;
p=son[p][u];
ans+=cut[p];
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
string a;
cin>>a;
insert(a);
}
while(m--){
ans=0;
string a;
cin>>a;
query(a);
cout<<ans<<endl;
}
return 0;
}