题目描述
对输入整数序列1 2 3 ..执行一组栈操作,输出操作的出栈序列。
输入
每行是一个测试用例,表示一个操作序列。操作序列由P和Q两个符号组成,P表示入栈,Q表示出栈。每个操作序列长度不超过1000。
输出
对每个操作序列,输出出栈序列,若操作序列有错误,如栈空时执行出栈操作,输出error。
样例输入 复制
PQPPQQPPPQPQ
PPPPQQP
PP
PQQPP
PPQQ
样例输出 复制
1 3 2 6 7
4 3
1 error
2 1
提示
注意,Sample Input中第三行没有出栈操作,因此输出一个空行。
先来个循环,判断输入的字符串是Q还是P,若是P就将j加1然后入栈,若是Q就将栈顶元素出栈,注意判断当栈为空的时候再出栈就输出error!
#include<bits/stdc++.h>
using namespace std;
int main()
{
char s[1000];
while(cin>>s)
{
int n=strlen(s),j=0;
stack<int>num;
for(int i=0;i<n;i++)
{
if(s[i]=='P')
{
j++;
num.push(j);
}
if(s[i]=='Q')
{
if(num.size())
{
cout<<num.top()<<" ";
num.pop();
}
else
{
cout<<"error";
break;
}
}
}
cout<<endl;
}
}