JS 匹配括号是否合法?

再刷题的时候碰到匹配括号问题,网上很多都是java或者c版本的,理解起来有点困难,求JS版本,最好解释透彻点,注释详细点

validBraces( "(){}[]" ) => returns true 
validBraces( "(}" ) => returns false 
validBraces( "[(])" ) => returns false 
validBraces( "([{}])" ) => returns true


白板的微信
浏览 880回答 1
1回答

拉风的咖菲猫

const validBraces = function(str) {        // 匹配括号        let brackets = str.match(/[\[\]\(\)\{\}]/g),            arr = [],            symbol;        for (var i in brackets) {            switch (brackets[i]) {                case '(':                    arr.push('(');                    break;                case '[':                    arr.push('[');                    break;                case '{':                    arr.push('{');                    break;                case ')':                    symbol = arr.pop();                    if (symbol !== '(') return false;                    break;                case ']':                    symbol = arr.pop();                    if (symbol !== '[') return false;                    break;                case '}':                    symbol = arr.pop();                    if (symbol !== '{') return false;                    break            }        }        // 当存在 (() 这样的情况时, 上面的都能通过, 最后需要检测一下arr的长度        return arr.length > 0 ? false : true;    }    // 测试console.log(validBraces("(){}[]"));//trueconsole.log(validBraces("(}"));//falseconsole.log(validBraces("[(])"));//falseconsole.log(validBraces("([{}])"));//true
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript