题解 | #牛牛的数列#
月月查华华的手机
https://ac.nowcoder.com/acm/problem/23053
考虑子序列自动机,每个地方自动跳转到下一个字符的位置,进行跳转~
然后模拟这一个过程就好啦!
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+7;
char ch[N];
int ne[N][30];
int main(){
cin>>ch;
int n=strlen(ch);
for(int i=0;i<26;i++)ne[n][i]=-1;
for(int i=n-1;~i;i--){
for(int j=0;j<26;j++)ne[i][j]=ne[i+1][j];
ne[i][ch[i]-'a']=i+1;
}
int Q;cin>>Q;
while(Q--){
cin>>ch;
int len=strlen(ch),p=0;
for(int i=0;i<len&&p!=-1;i++)p=ne[p][ch[i]-'a'];
if(p!=-1)cout<<"Yes\n";
else cout<<"No\n";
}
}