题目描述:
/**
时间限制:3秒
空间限制:32768K
写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)
给定一个表达式A,请返回一个bool值,代表它是否合法。
测试样例:
"[a+b*(5-4)]*{x+b+b*(({1+2)}}"
返回:true
*/
思路如下:
维护一个栈即可
代码如下:
class ChkExpression {
public:
bool chkLegal(string A) {
// write code here
stack<char> st;
for(int i=0; A[i]!='\0'; i++)
{
if(A[i]=='{' || A[i]=='[' || A[i]=='(')
st.push(A[i]);
else if(A[i]=='}' || A[i]==']' || A[i]==')'){
if(st.empty())
return false;
st.pop();
}
}
return st.empty();
}
};
网友评论