题目描述
对输入序列执行一组栈操作,判断操作是否正确。
输入
每行是一个测试用例,表示一个操作序列。操作序列由P和Q两个符号组成,P表示入栈,Q表示出栈。操作序列长度不超过1000。
输出
对每个操作序列,若操作序列正确,即操作结束时栈中刚好为空,则输出Y; 若操作序列有错误,如栈空时执行出栈操作,或操作结束时栈中不空,则输出N。
样例输入 复制
PQP
PQ
PQQ
样例输出 复制
N
Y
N
这道题捏和上一题差不多,我就不解释了,自己想想呗!
#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++;
}
if(s[i]=='Q')
{
if(j>0)
j--;
else
{
j=-1;
break;
}
}
}
if(j==0)
cout<<"Y"<<endl;
else
cout<<"N"<<endl;
}
}