题目描述
假设一个表达式有英文字母(小写)、运算符(+
、-
、*
、/
)和左右小(圆)括号构成,以 @
作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则输出 YES
;否则输出 NO
。表达式长度小于 255,左圆括号少于 20 个。
输入格式
一行:表达式。
输出格式
一行:YES
或 NO
。
样例 #1
样例输入 #1
样例输出 #1
样例 #2
样例输入 #2
样例输出 #2
提示
表达式长度小于 255,左圆括号少于 20 个。
题解
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 31 32 33 34 35 36 37 38 39 40 41
| #include<iostream> #include<stack> #include<string>
using namespace std;
int main() { stack<int> input; string str; cin >> str; str.pop_back(); for (auto i : str) { if (i == '(') { input.push(i); } else if (i == ')') { if (input.empty()) { cout << "NO" << endl; return 0; } else { input.pop(); } } } if (input.empty()) { cout << "YES" << endl; } else { cout << "NO" << endl; } return 0; }
|