题目链接:合法括号序列判断
题目描述
描述
给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。
测试样例:
题目分析
题中是判断括号是否合理
匹配不成功的可能性有如下几种:
- 当前字符不是括号,这种情况可以直接进行返回false
- 括号匹配不完整,出现单个左括号或者右括号的情况
这里可以使用一个栈进行存放字符串,遇到左括号则进行入栈,遇到右括号则进行判断栈顶是否有匹配的左括号,如果有则将栈顶元素出栈,如果没有则表示匹配不完整,多出了右半边。如果最后栈为空,则说明都有匹配的括号。如果栈不为空则说明有多余的左括号
代码实现如下:
代码实现
bool chkParenthesis(string A, int n) {
// write code here
stack<char> cp;
for(size_t i=0;i<A.size();i++)
{
if(A[i]=='(')
{
cp.push(A[i]);
}
else if(A[i]==')')
{
if(!cp.empty() && cp.top()=='(')
{
cp.pop();//如果是匹配的左括号则出栈
}
else
{
return false;
}
}
else
{
return false;
}
}
if(cp.empty())
{
return true;
}
else
{
return false;
}
}