假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。
输入格式:
一行:表达式
输出格式:
一行:“YES” 或“NO”
表达式长度小于255,左圆括号少于20个
emmmm,就是输入和return 0的使用上学习了
C++代码:
#include<iostream> #include<cstdio> #include<cstring> #include<stack> using namespace std; stack<char> s; int main(){ char ch; while(scanf("%c",&ch) &&ch != '@'){ //输入一行字符串,以‘@’为结尾。 if(ch == '('){ s.push(ch); } else if(ch == ')'){ if(s.empty()){ //需要先判断栈顶是否为‘(’,如果不是,那肯定不对,因为无论如何')'并不是先于'('。另外,不用ch == '( ,因为题目只有括号,而且如果用了,可能会超时. printf("NO\n"); return 0; } s.pop(); } } if(!s.empty()) printf("NO\n"); else printf("YES\n"); return 0; }
转载于:https://www.cnblogs.com/Weixu-Liu/p/10579219.html
相关资源:垃圾分类数据集及代码