有效的括号

62 阅读1分钟

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。

思路

  • 其实思路没有那么复杂,首先排除边界条件,然后将map和数组去对比就可以了
  • 数组每一次遍历都需要push和pop操作
  • map.get()的值需要和数组最后一个值去判断所以每次都要pop出去,直至全部弹出
  • 数组的长度为空时就是true,反之为false
                    /**
                     * @param {string} s
                     * @return {boolean}
                     */
                    var isValid = function(s) {
                        let map=new Map();
                        map.set(")","(");
                        map.set("]","[");
                        map.set("}","{");
                        const n=s.length;
                        if(n%2===1){
                            return false;
                        }
                        const string=[];
                        for(let ch of s){
                            if(map.has(ch)){
                                if(!string.length||string[string.length-1]!=map.get(ch)){
                                return false;
                            }
                            string.pop();
                            }else{
                                string.push(ch);
                            }
                        }
                        return !string.length;
                    };