传送门
这道题跟匹配括号类似,是对栈的简单应用
还要注意一点的是,if(!q.empty()),else 对应的是空。而不是if(q.top()==‘a’)对应
#include<cstdio>
#include<iostream>
#include<stack>
using namespace std;
stack<char> q;
string s;
int n;
bool ok;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
while(!q.empty())
q.pop();
ok=false;
cin>>s;
for(int j=0;j<s.length();j++){
if(s[j]=='a'){
q.push(s[j]);
}
else if(s[j]=='b'){
if(!q.empty()){ //注意
if(q.top()=='a'){//注意
q.pop();
}
else{
ok=true;
break;
}
}
else {
ok=true;
break;
}
}
else if(s[j]=='c'){
continue;
}
else{
ok=true;
break;
}
}
if(!q.empty())
ok=true;
if(!ok)
printf("Pattern %d: More aliens!\n",i);
else{
printf("Pattern %d: Still Looking.\n",i);
}
cout<<endl;
}
return 0;
}