判断字符串是否合法(1)

给定模拟字符串'[()]{{}}',给定字符串只含有括号,要求括号闭合。

不合法字符串形如[(]){}{[](){(})[]}{}{[]

基本思路:

  • 给定字符串的字符数一定为偶数

  • 遇到右半边括号时,它左侧相邻的必定是同种类型的左半边括号

let arr = []

function isLegal(str) {
    let strArr = str.split('')
    if (str.length % 2 !== 0) {
        return '不合法'
    }
    strArr.forEach(item => {
        let len = arr.length - 1
        switch (item) {
            case '{':
                arr.push('{')
                break;
            case '[':
                arr.push('[')
                break;
            case '(':
                arr.push('(')
                break;
            case '}':
                if (arr[len] === '{') {
                    arr.pop()
                }
                break;
            case ']':
                if (arr[len] === '[') {
                    arr.pop()
                }
                break;
            case ')':
                if (arr[len] === '(') {
                    arr.pop()
                }
                break;
        }
    });
    return arr.length === 0 ? '合法' : '不合法'
}
console.log(isLegal('{(})[]')); //不合法
原文地址:https://www.cnblogs.com/jincanyu/p/14767022.html