记录编号 |
596078 |
评测结果 |
AAAAAAAAAAAAAA |
题目名称 |
子序列 |
最终得分 |
100 |
用户昵称 |
wdsjl |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.071 s |
提交时间 |
2024-10-21 15:24:37 |
内存使用 |
5.09 MiB |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
char s[N],b[60];
int n,m,lenb,to[N][30],la[30];
int main(){
freopen("subsequence.in","r",stdin);
freopen("subsequence.out","w",stdout);
scanf("%s",s+1);
scanf("%d",&m);
n=strlen(s+1);
for(int i=0;i<26;i++)la[i]=n+1;
for(int i=n;i>=1;i--){
la[s[i]-'a']=i;
for(int j=0;j<26;j++){
to[i][j]=la[j];
}
}
for(int j=0;j<26;j++){
to[0][j]=la[j];
}
while(m--){
scanf("%s",b+1);
// cout<<b+1<<endl;
lenb=strlen(b+1);
int x=0;
for(int i=1;i<=lenb;i++){
x=to[x][b[i]-'a'];
// cout<<"R"<<x;
if(x==n+1){
printf("No\n");
break;
}
}
if(x<=n){
printf("Yes\n");
}
}
return 0;
}