王道原题
【思路】
- 遇到左括号
- 直接入栈
- 遇到右括号
- 如果栈空,返回false
- 如果与栈顶元素不匹配,返回false
- 如果与栈顶元素匹配,弹出栈顶元素
- 遍历结束栈不为空,返回false。
bool isValid(string s) {
stack<char> kuohao;
for(int i=0;i<s.length();i++){
if(s[i]=='('||s[i]=='['||s[i]=='{')
kuohao.push(s[i]);//左括号入栈
else {//右括号
if(kuohao.empty()) return false;
if((s[i]==')'&&kuohao.top()=='(')||
(s[i]==']'&&kuohao.top()=='[')||
(s[i]=='}'&&kuohao.top()=='{'))
{
kuohao.pop();//括号匹配则出栈
} else
return false;
}
}
if(!kuohao.empty())return false;
else return true;
}