力扣题目链接
实现情况
三种情况出现匹配不当:
- 左括号多右括号少;
- 左括号和右括号遇到不匹配;
- 右括号多左括号少;
很自然的想法,使用栈来做这个问题,其中分为两个方向:
- 遇到左括号入栈左括号,遇到相匹配的右括号出栈;
- 遇到左括号入栈右括号,遇到相匹配的右括号出栈;
其中入栈右括号比入栈左括号更简单,省去自定义的match阶段;
具体实现代码如下:
class Solution {
public:bool isValid(string s) {stack<char> st;int len = s.size();for(int i = 0; i < len;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();}
};