进来左括号就添加栈;
进来右括号就获取栈顶,出栈;然后获取的栈顶匹配当前进来的右括号,对了就下一次循环,不对就直接false;
如果大小为1,说明没有匹配,false
如果取不出栈顶,说明没有进左括号,false
如果最后栈不为空,说明只进了左括号,false
class Solution {
public:
bool isValid(string s) {
stack<char>stk;
if(s.size()==1)
return false;
for(int i=0;i<s.size();i++){
if(s[i]=='(' || s[i]=='[' || s[i]=='{'){
stk.push(s[i]);
}
else{
if(stk.empty())
return false;
char str=stk.top();
stk.pop();
if(s[i]==')' && str=='(')
continue;
else if(s[i]==']' && str=='[')
continue;
else if(s[i]=='}' && str=='{')
continue;
else
return false;
}
}
if(stk.empty())
return true;
else
return false;
}
};