P1739 表达式括号匹配(洛谷题面)
题目
题目描述:
假设一个表达式有英文字母(小写)、运算符(+、-、*、/)和左右小(圆)括号构成,以 @ 作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则输出 YES;否则输出 NO。表达式长度小于 255,左圆括号少于 20 个。
输入格式:
一行:表达式。
输出格式:
一行:YES 或 NO。
数据范围与说明:
表达式长度小于 255,左圆括号少于 20 个。
输入输出样例 #1
输入:
输出:
输入输出样例 #2
输入:
输出:
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include<bits/stdc++.h> using namespace std; string s; stack <int> stk; int main(){ int i=0; getline(cin,s); while(s[i]!='@') { if(stk.empty()){ if(s[i]==')'){ cout<<"NO"; return 0; } } if(s[i]=='('){ stk.push(s[i]); } if(s[i]==')'){ stk.pop(); } i++; } if(stk.empty()){ cout<<"YES"; }else { cout<<"NO"; } return 0; }
|