题目:
输入两个字符串(整数或字母),第一个表示为栈的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;
}
}