表达式括号匹配(stack)·题解
2023-08-22 19:32:25
发布于:浙江
68阅读
0回复
0点赞
思路:
题目要求判断一个表达式的前后括号是否匹配。
- 设置栈,记录前括号的数量
- 将表达式的每个字符依序输入直到输入的为
@
退出 - 如果输入的是
(
则入栈 - 如果输入的是
)
,栈为空说明没有前括号,不匹配,直接输出NO
,否则出栈 - 直到输入结束,如果栈为空说明表达式匹配,否则不匹配
代码:
#include<bits/stdc++.h>
using namespace std;
stack<bool> s;
char c;
int main(){
while(cin>>c){
if(c=='@') break;
else if(c=='(') s.push(1);
else if(c==')'){
if(s.empty()){
cout<<"NO";
return 0;
}
else s.pop();
}
}
if(s.empty()) cout<<"YES";
else cout<<"NO";
}
这里空空如也
有帮助,赞一个