为了账号安全,请及时绑定邮箱和手机立即绑定

JS 匹配括号是否合法?

JS 匹配括号是否合法?

白板的微信 2018-08-07 09:09:18
再刷题的时候碰到匹配括号问题,网上很多都是java或者c版本的,理解起来有点困难,求JS版本,最好解释透彻点,注释详细点validBraces( "(){}[]" ) => returns true  validBraces( "(}" ) => returns false  validBraces( "[(])" ) => returns false  validBraces( "([{}])" ) => returns true
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

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("(){}[]"));//true

console.log(validBraces("(}"));//false

console.log(validBraces("[(])"));//false

console.log(validBraces("([{}])"));//true


查看完整回答
反对 回复 2018-09-23
  • 1 回答
  • 0 关注
  • 878 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信