思路:
在遍历过程中,将遍历到的左括号相匹配的右括号push到栈中,当遍历到右括号时,将栈顶的括号弹出与遍历到的括号比对,查看是否是我们要寻找的括号即可
class Solution {
public:
bool isValid(string s) {
if (s.size() % 2 != 0){
return false;
}
stack<char> st;
for(int i = 0; i <= s.size() - 1; i++){
if(s[i] == '('){
st.push(')');
}
else if(s[i] == '{'){
st.push('}');
}
else if(s[i] == '['){
st.push(']');
}
else if(st.empty() || st.top() != s[i]){
return false;
}
else{
st.pop();
}
}
return st.empty();
}
};