表达式合法判断
- 参与人数:453时间限制:3秒空间限制:32768K
- 算法知识视频讲解
题目描述
写一段代码,判断一个包括'{','[','(',')',']','}'的表达式是否合法(注意看样例的合法规则。)
给定一个表达式A,请返回一个bool值,代表它是否合法。
测试样例:
"[a+b*(5-4)]*{x+b+b*({1+2)}}"
返回:true
测试样例:
"[a+b*(5-4)]*{x+b+b*(({1+2)}}"
返回:false
本题目较为坑,只要左右大小一样就行不用匹配
可以考虑用栈来实现
方法一:
class ChkExpression {
public:
bool chkLegal(string A) {
vector<char> 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] == ']')
{
stack.pop_back();
}
}
return stack.empty();
}
};
方法二
class
ChkExpression {
public
:
bool chkLegal (string A) {
// write code here
int
k1=
0
, k2=
0
;
for
(
int
i=
0
;i<A.size();i++)
{
if
(A[i]==
'('
||A[i]==
'['
||A[i]==
'{'
)
{
k1++;
}
if
(A[i]==
')'
||A[i]==
']'
||A[i]==
'}'
)
{
k2++;
}
}
if
(k1==k2)
{
return
true
;
}
else
{
return
false
;
}
}
};