题目描述
写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)
给定一个表达式A,请返回一个bool值,代表它是否合法。
测试样例:
"[a+b*(5-4)]*{x+b+b*(({1+2}))}"
返回:true
#include <unordered_map>
class ChkExpression {
public:
bool chkLegal(string str) {
// write code here
unordered_map<char, char> table;
table['{'] = '}';
table['('] = ')';
table['['] = ']';
stack<char> temp;
for(auto item:str)
{
if(item == '['|| item == '{' || item == '(')
temp.push(item);
else
if(item == ']'|| item == '}' || item == ')')
{
if(temp.size()>0)
{
char top = temp.top();
if(table[top] == item)
temp.pop();
else
return false;
}
else
return false;
}
}
if(temp.size()>0)
return false;
else
return true;
}
};