面试刷题记录

写一段代码,判断一个包括’{‘,’[‘,’(‘,’)’,’]’,’}’的表达式是否合法(注意看样例的合法规则。)
给定一个表达式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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值