有效括号

思路
用栈存储没有匹配的符号
bool isValid(string s) {
std::stack<char> stk;
int sz = s.size();
for (int i = 0; i < sz; ++i) {
if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
stk.push(s[i]);// 无法匹配直接放入栈
continue;
} else if (s[i] == ')') {
if (stk.empty()) return false;//需要匹配,但是栈为空,返回false
char foo = stk.top();
if (foo != '(') return false;// 匹配不成功,返回false
stk.pop();// 匹配成功,进行下一个
continue;
} else if (s[i] == ']') {
if (stk.empty()) return false;
char foo = stk.top();
if (foo != '[') return false;
stk.pop();
continue;
}else if (s[i] == '}') {
if (stk.empty()) return false;
char foo = stk.top();
if (foo != '{') return false;
stk.pop();
continue;
}
}
if (stk.empty()) return true;
return false;
}

浙公网安备 33010602011771号