栈的应用,括号匹配。
经典做法是,遇左括号压入,遇右括号判断,和栈顶配对就继续,不配对或者栈空就错了。最后判断是否为空。
代码有些麻烦。
我是遇左括号压对应的右括号,最后判断代码就会很简单:相等即可。
class Solution {
public:
bool isValid(string s) {
int len=s.size();
stack<char> st;
for(int i=0;i<len;i++){
if(s[i]=='(')st.push(')');
else if(s[i]=='[')st.push(']');
else if(s[i]=='{')st.push('}');
else if(st.empty())return false;
else if(st.top()!=s[i])return false;
else st.pop();
}
return st.empty();
}
};