括号匹配

力扣题目链接

实现情况

三种情况出现匹配不当:

  1. 左括号多右括号少;
  2. 左括号和右括号遇到不匹配;
  3. 右括号多左括号少;

很自然的想法,使用栈来做这个问题,其中分为两个方向:

  1. 遇到左括号入栈左括号,遇到相匹配的右括号出栈;
  2. 遇到左括号入栈右括号,遇到相匹配的右括号出栈;

其中入栈右括号比入栈左括号更简单,省去自定义的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();
    }
};
posted @ 2025-09-10 19:27  q_z_chen  阅读(8)  评论(0)    收藏  举报