链接: link.
解题思路:
- 采用栈来解决这道题目。返回false的情况一共有三种①左半边括号多了②右半边括号多了③出现了非括号字符
- 当遇见’(’,就进行一个相应的压栈,当遇见’)'就把栈顶的括号拿过来进行配对(这也是用到了栈的后进先出的特性)
class Parenthesis {
public:
bool chkParenthesis(string A, int n) {
// write code here
stack<char> st;
for(auto ch : A)
{
switch(ch)
{
case '(':
st.push(ch);
break;
case ')':
if(st.empty())
{
return false;//多出了右半部分括号
}
st.pop();//从栈中取出一个'('与之匹配
break;
default:
return false;//遇到了非括号字符
}
}
return st.empty();
}
};