模拟出入栈游戏
现有 a∼z 共 26 个小球模拟出入栈操作,小球按照 a∼z 的顺序压入栈,在栈顶的元素可以随时被取出,在游戏开始前给出任意 26个字母的一些排列,问是否能够由出栈顺序得到这个排列。
输入格式
输入包含多组测试数据。
每组数据占一行,包含一个 a∼z的排列。
输出格式
每组数据输出一行结果,如果能够由出栈顺序得到给定排列,则输出 yes,否则输出no。
数据范围
输入最多包含 100
组数据。
输入样例:
abcdefghijklmnopqrstuvwxyz
zabcdefghijklmnopqrstuvwxy
输出样例:
yes
no
分析 给定压栈循序判断能否得到对应的出栈序列
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
char st[27];
while(cin>>s){
int len=0,lena=0;
for(char i=0;i<26;++i){//初始化st中的每个元素
len++;
st[len]=i+'a';
while(st[len]==s[lena]){//判断s中是否符合条件 得让st为空 全部出现过而且符合顺序
lena++;
len--;
}
}if(!len)cout<<"yes\n";
else cout<<"no\n";
}
}