【数据结构】 栈和队列 YTU 2238 括号匹配(栈

来源:互联网 发布:oracle数据库常用函数 编辑:程序博客网 时间:2024/06/10 22:39

题目描述

假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“ ”,且这三种括号可按任意的次序嵌套使用(如:…[{… …[]][]())。编写判别给定表达式中所含括号是否正确配对出现的算法。输出结果YES 或者 NO。

输入

5+{[2X5]+2}

输出

YES

样例输入

8-[{2+7]}

样例输出

NO
很简单的一道题,注意一下只要不符合要求直接输出no即可。只判断(){}【】
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>using namespace std;int stack[100],top;int main(){string s;while(cin>>s){int i;top=0;int flag=1;for(i=0;i<s.size();i++){if(s[i]=='{'){stack[top++]=3;}elseif(s[i]=='['){stack[top++]=2;}elseif(s[i]=='('){stack[top++]=1;}elseif(s[i]=='}'){if(stack[top-1]==3)top--;else{flag=0;break;}}elseif(s[i]==']'){if(stack[top-1]==2)top--;else{flag=0;break;}}elseif(s[i]==')'){if(stack[top-1]==1)top--;else{flag=0;break;}}}if(flag)cout<<"YES"<<endl;elsecout<<"NO"<<endl;}}
0 0