一,题目描述
对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。
给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。
测试样例:
"(()())",6
返回:true
测试样例:
"()a()()",7
返回:false
测试样例:
"()(()()",7
返回:false
二,程序分析
1.首先看到这个题目,能想到的就是括号匹配的问题,那么,我们想怎么能够实现这样呢,所以我们可以使用栈的方法,来进行。
2.我们可以让括号的一遍,进行入栈,然后,继续入栈,如果碰到另外一边,那么出栈,直到栈里面的字符都能完成。
3.如果全部出栈,那么返回true,否则,返回false。
三,程序代码
class Parenthesis {
public:
bool chkParenthesis(string A, int n) {
stack<char> s;
for(auto& e : A)
{
switch(e)
{
case '(':
//入栈
s.push(e);
break;
case ')':
{
//如果,不匹配,则出栈
if(s.empty() || s.top() != '(')
return false;
else
//匹配,出栈
s.pop();
}
break;
default:
return false;
}
}
//全部返回输出true;
return true;
}
};
四,程序运行结果
如果感觉不错的话,加一个关注再走吖!!!