- 题目描述:输入n随后n个字符串,输入m,代表m次询问,每次询问输入一个字符串是否在n个字符集中出现过。
输入:
5
abaa
aaaaccc
acs
ssssc
woaini
5
abaa
acc
cccca
woaini
woaini
输出:
YES
NO
NO
YES
YES - 代码:
#include<cstdio>
const int N=1e5;
int a[N][27],root=1,sz=1,danger[N],n,m;
char s[N];
void ins(){
int now=root;
for(int i=0;s[i];i++)
if(!a[now][s[i]-'a'])a[now][s[i]-'a']=++sz,now=a[now][s[i]-'a'];
danger[now]++;
}
int query(){
int now=root;
for(int i=0;s[i];i++)now=a[now][s[i]-'a'];
return danger[now];
}
int main(){
scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%s",s),ins();
scanf("%d",&m);for(int i=1;i<=m;i++)scanf("%s",s),printf("%s\n",query()?"YES":"NO");
}