20. 有效的括号 - 力扣(LeetCode)
括号序列错误时会出现三种情况:
左括号多余;右括号多余;左右括号不匹配。
解决思路:
遇到左括号,将对应的右括号入栈,遇到右括号则出栈顶元素。因此如果对于情况一,则所有括号遍历完之后有剩余,对于情况2,则此时栈为空,对于情况三,此时出栈元素与遍历的右括号不一致。
代码:
cpp
class Solution {
public:
bool isValid(string s) {
stack<char> st;
for(int i = 0; i < s.size(); 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();
}
};