PIPI現有a-z 26個小球模擬出入棧操作,小球按照a~z的順序壓入棧,在棧頂的元素可以隨時被取出,在遊戲開始前給出任意26個字母的一些排列,問是否能夠由出棧順序得到這個排列。
輸入
輸入包含多組測試用例。
每組測試用例包含26個字母組成的一個序列。輸出
若出棧順序合法,輸出"yes",否則輸出"no".
樣例輸入
abcdefghijklmnopqrstuvwxyz zabcdefghijklmnopqrstuvwxy樣例輸出
yes no
判斷合法的出棧序列,一個元素要出棧,那麼比它先入棧但還沒出棧的那些元素,出棧順序與入棧順序是相反的。比如cdbea,c要出棧,比c先入棧但還沒出棧的那些元素爲a,b,這兩個元素的出棧順序必須和入棧順序相反,爲ba。
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main(void)
{
int i,j,flag;
string s,t;
while(cin >> s) {
flag = 0;
for(i = 0; i < 26; i++) {
t = "";
for(j = i + 1; j < 26; j++) {
if(s[j] < s[i]) {
t.push_back(s[j]);
}
}
int len = t.size();
for(j = 0; j < len - 1; j++) {
if(t[j] < t[j + 1]) {
flag = 1;
break;
}
}
if(flag) {
break;
}
}
if(flag) printf("no\n");
else printf("yes\n");
}
return 0;
}