程序员面试题100题第24题——判断是否是push、pop序列
题目:
输入两个字符串(整数或字母),第一个表示为栈的push顺序,判断另外一个是不是对应的pop序列;
为简单起见,我们假设push序列的任意两个字符不相等。
代码:
bool IsPossiblePopOrder(const char* pPush,const char* pPop) { stack<char> stk; const char* p=pPush; const char* q=pPop; if(strlen(p) != strlen(q)) { return false; } while( *p!='\0') { while(*p != *q && *p!='\0') { if(!stk.empty()) { if(stk.top() == *q)//不能遗忘,例如12345,13245 { q++; stk.pop(); } }else{ stk.push(*p); p++; } } if(*p == *q) { p++; q++; } } while(!stk.empty()) { if(stk.top() == *q) { q++; stk.pop(); }else{ return false; } } if(stk.empty()) { return true; } else{ return false; } }