题目:
分析:借助“实现”,遇到左括号将其压入栈,遇到右括号,从栈中取左括号,一直这样到字符串完了栈也空了,则说明匹配成功,否则匹配失败
class Parenthesis {
public:
stack<char> s;//放字符的栈
bool chkParenthesis(string A, int n) {
// write code here
int i=0;
while(i<n)
{
if(A[i]=='(')//遇到左括号,则入栈
{
s.push(A[i]);
i++;
}
else if(A[i]==')')//遇到右括号,如果栈不空,看是不是栈顶是左括号
{
if((!s.empty()) && (s.top()=='('))//是的话出栈
{
s.pop();
i++;
}
else//匹配失败
{
return false;
}
}
else//不是左括号也不是右括号,直接看下一个
{
i++;
}
}
if(s.empty())//出来后,栈为空才代表匹配成功
return true;
else
return false;
}
};