AcWing 142. 前缀统计
原题链接
简单
作者:
Re_4
,
2025-04-24 22:32:11
· 江西
,
所有人可见
,
阅读 1
#include<iostream>
using namespace std;
const int N=1000010;
int son[N][26],cnt[N],idx=0;
char str[N];
int n,m;
void insert(char* str){
int p=0;
for(int i=0;str[i];i++){
int a=str[i]-'a';
if(!son[p][a]) son[p][a]=++idx;
p=son[p][a];
}
cnt[p]++;
}
int query(char* str){
int p=0,res=0;
for(int i=0;str[i];i++){
int a=str[i]-'a';
if(son[p][a]) res+=cnt[son[p][a]];
else return res;
p=son[p][a];
}
return res;
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>str;
insert(str);
}
while(m--){
cin>>str;
cout<<query(str)<<endl;
}
return 0;
}