表达式括号匹配(stack)AC代码
2026-02-03 21:01:32
发布于:浙江
2阅读
0回复
0点赞
思路:
遍历表达式,将左括号(进栈,若遇到右括号),则检查栈是否为空,若是空的,说明没有匹配的(,输出NO,结束程序,遍历后再次查看栈是否为空,若不空,则说明有多余的(,输出NO,否则,输出YES
代码实现
#include <bits/stdc++.h>
using namespace std;
int main()
{
stack <char> sta;
string s;
cin >> s;
for(int i = 0;i < s.size();i++)
{
if(s[i] == '(')
{
sta.push('(');
}
if(s[i] == ')')
{
if(sta.empty())
{
cout << "NO";
return 0;
}
else
{
sta.pop();
}
}
}
if(sta.empty())
{
cout << "YES";
}
else
{
cout <<"NO";
}
}
这里空空如也







有帮助,赞一个