#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define maxn 200005
char s[maxn];
int nxt[maxn][
27],ans[maxn],t[maxn];
int main(){
int q;
scanf("%s %d",s+
1,&
q);
int n=strlen(s+
1);
memset(nxt[n],-
1,
sizeof nxt[n]);
for(
int i=n-
1;i>=
0;i--
)
for(
int j=
0;j<
26;j++
)
if(s[i+
1]-
'a'==j) nxt[i][j]=i+
1;
//下一个 'a'+j 在字符串的第i+1个位置
else nxt[i][j]=nxt[i+
1][j];
//下一个'a'+j字符在字符串的nxt[i+1][j]个位置
int len=
1;
char op[
10],c;
t[0]=
0;
while(q--
){
scanf("%s",op);
if(op[
2]==
's'){
cin >>
c;
if(t[len-
1]==-
1) t[len]=-
1;
else t[len]=nxt[t[len-
1]][c-
'a'];
len++
;
}
else len--
;
if(t[len-
1]!=-
1) puts(
"YES");
else puts(
"NO");
}
return 0;
}
转载于:https://www.cnblogs.com/zsben991126/p/9904975.html
转载请注明原文地址: https://win8.8miu.com/read-14732.html