llllmz

导航

20. 有效的括号C++

括号匹配用栈是解决是最简单那的。

遇到左括号就入栈。遇到右括号就出栈,然后看是否匹配。这里再用一个map把括号数字化会更简单。

class Solution {
public:
    bool isValid(string s) {
        map<char,int> m={
            {'(',1},{')',-1},
            {'{',2},{'}',-2},
            {'[',3},{']',-3}
    };
    int flag =1;
    stack<int> a;
        for(int i =0 ;i<s.size();i++){
            int t=m[s[i]];
            if(t>0){
                a.push(t);
            }else{
                if(a.empty()){
                    flag=0;
                    break;
                }else{
                    int x=a.top()+t;
                    if(x!=0){
                        flag=0;
                        break;
                    }
                    a.pop();
                }
            }
        }
        if(!a.empty()) flag=0;
        if(flag){
            return true;
        }else{
            return false;
        }
    }
};

第一次写leetcode有点不适应。

结果:

posted on 2024-01-18 15:24  神奇的萝卜丝  阅读(29)  评论(0)    收藏  举报