思路:
让字符ch按照从a~z的顺序入栈,和str[i]对比,如果stk.top() < str[i],ch继续入栈;如果stk.top() > str[i],说明不能得到给定排序;如果stk.top() == str[i],i++,继续往后匹配。
#include<iostream>
#include<stack>
using namespace std;
int main(){
string str;
while(getline(cin,str)){
stack<char> stk;
char ch = 'a';//初始字符
bool flag = true;
for(int i = 0;i < str.size();i++){
while(stk.empty() || stk.top() < str[i]){
stk.push(ch);
ch++;
}
if(stk.top() > str[i]){
cout<<"no"<<endl;
flag = false;
break;
}else{
stk.pop();
}
}
if(flag) cout<<"yes"<<endl;
}
return 0;
}