#include<iostream>
#include<stack>
#include<string>
using namespace std;
# 判断符号是否为一对
bool ArePair(char opening, char closing)
{
if (opening == '(' && closing == ')') return true;
else if (opening == '{' && closing == '}') return true;
else if (opening == '[' && closing == ']') return true;
return false;
}
bool AreParenthesesBalanced(string exp)
{
stack<char> S;
for (int i = 0; i < exp.length(); i++)
{
#如果是‘(’ '{' '['则压入栈中
if (exp[i] == '(' || exp[i] == '{' || exp[i] == '[')
S.push(exp[i]);
#如果是')' ']''}'则判断栈中是否为空 与斩的顶端是否配对 是的话则将栈顶出栈
else if (exp[i] == ')' || exp[i] == '}' || exp[i] == ']')
{
if (S.empty() || !ArePair(S.top(), exp[i]))
return false;
else
S.pop();
}
}
#如果栈为空 则表达式符号对称
return S.empty() ? true : false;
}
int main()
{
string expression;
cout << "Please enter the expression: ";
cin >> expression;
if (AreParenthesesBalanced(expression))
cout << "Balanced \n";
else
cout << "Not Balanced\n";
}
数据结构-Stack-表达式符号是否对称
于 2023-03-21 15:29:42 首次发布