js 判断字符串中的括号使用是否合理

需求:判断字符串中的括号使用是否合理

思路:由于,括号是穿插于字符之间的,字符与字符的组合形式众多,无法直接判断出括号的使用情况;换个思路,可以从括号本身使用的方法入手:1. 成对出现 2.形式固定

代码如下

/* 判断字符串中的括号 ()[]{} 使用是否合法 */
    function checkBracketsIsValid(str) {
        // 采用正则匹配,获取到只有括号的字符串
        let bracketsStr = str.match(/[\(\)\[\]\{\}]/g);
        bracketsStr = bracketsStr ? bracketsStr.join('') : '';

        // 采用递归,用 replace 逐个将成对的括号剥离出原字符串
        function spliceBrackets(theStr = '') {
            const result = theStr.match(/\(\)|\[\]|\{\}/);
            // 存在成对的括号,将其 replace,进入下一次递归;不存在,判断字符串长度
            return result ? spliceBrackets(theStr.replace(result[0], '')) : theStr === '';
        }

        // 1.如果只有括号的字符串长度为偶,则进入递归,判断括号成对情况;否则,字符串中的括号不合法,返回 false;
        // 2.递归:字符串抽离到最后,如果长度为0,则字符串中的括号合法,返回 false;否则,字符串中的括号不合法,返回 false。
        return (bracketsStr.length) % 2 === 0 ? spliceBrackets(bracketsStr) : false
    }

    checkBracketsIsValid('([{]})'); // false
    checkBracketsIsValid('([]{})'); // true
    checkBracketsIsValid('([]{}]'); // false
    checkBracketsIsValid(''); // true

小结:通过将所有的括号字符提取出来,然后,依次将成对的括号给删掉,最后,如果还有剩余字符,则表示存在括号使用不规范的情况,如果为空字符串,则括号均为合理使用。

仅供来日回顾参考。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值