栈(待优化)
class Solution {
public:
bool isValid(string s) {
stack<char> st;
for(int i = 0; i < s.size(); i++) {
if(s[i] == '(' || s[i] == '[' || s[i] == '{'){
st.push(s[i]);
}else if(st.size() && (s[i] == ')' || s[i] == ']' || s[i] == '}')){
switch(s[i]){
case ')':
if(st.top() == '(') {
st.pop();
}else{
return false;
}
break;
case ']':
if(st.top() == '[') {
st.pop();
}else{
return false;
}
break;
case '}':
if(st.top() == '{') {
st.pop();
}else{
return false;
}
break;
}
}else if(!st.size() && (s[i] == ')' || s[i] == ']' || s[i] == '}')){
return false;
}
}
if(st.size()){
return false;
}
return true;
}
};
题目链接:https://leetcode-cn.com/problems/valid-parentheses/