写一段代码,判断一个包括’{‘,’[‘,’(‘,’)’,’]’,’}’的表达式是否合法(注意看样例的合法规则。)
给定一个表达式A,请返回一个bool值,代表它是否合法。
测试样例:
“[a+b*(5-4)]{x+b+b({1+2)}}”
返回:true
测试样例:
“[a+b*(5-4)]{x+b+b(({1+2)}}”
返回:false
include < vector>
include < iostream>
using namespace std;
class ChkExpression {
public:
bool chkLegal(string A)
{
vector stack;
for(int i = 0;i< A.size();i++)
{
if(A[i] == ‘{’ || A[i] == ‘(’ || A[i] == ‘[‘)
{
stack.push_back(A[i]);
}
else if(A[i] == ‘}’ || A[i] == ‘)’ || A[i] == ‘]’)
{
int a = stack.size();
if(a < 1)return false;
//cout << a<< endl;
//if ((stack[a-1] == ‘(’ && A[i] == ‘)’) || (stack[a-1] == ‘{’ && A[i] == ‘}’) || (stack[a-1] == ‘[’ && A[i] == ‘]’))
else stack.pop_back();
//return false;
//else cout<<”false”<< endl;
}
}
if(stack.size()>0)return false;
return true;
//cout<<”true”<< endl;
}
};
int main()
{
string a = “[a+b*(5-4)]{x+b+b({1+2)}}”;
ChkExpression ce;
bool b = ce.chkLegal(a);
cout << b<< endl;
return 0;
}