栈:
相同方向直接入栈,不同方向,只需匹配是否和当前栈顶字符匹配,不匹配直接返回 false
class Solution {
public:
bool isValid(string s) {
vector<char> st;
for (auto c : s) {
if (st.size()) {
if ('(' == c || '[' == c || '{' == c) st.push_back(c);
else if (')' == c && st.back() != '(') return false;
else if (']' == c && st.back() != '[') return false;
else if ('}' == c && st.back() != '{') return false;
else st.pop_back();
}
else {
if (')' == c || ']' == c || '}' == c) return false;
st.push_back(c);
}
}
return st.empty();
}
};