【每日算法】检测括号合法性

210 阅读1分钟

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

有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。

  • 左括号必须以正确的顺序闭合。

    function fun(str) {
        if(str == '') {
            return true;
        }

        let stack = [];
        for(let i = 0; i < str.length; i++) {
            let s = str[i];

            switch(s) {
                case '(':
                    stack.push(')');
                    break;
                case '{':
                    stack.push('}');
                    break;
                case '[':
                    stack.push(']');
                    break;
                default:
                    const stackTop = stack.pop();
                    if(stackTop != s) {
                        return false;
                    }
                    break;
            }


        }
        if(stack.length === 0) {
            return true;
        }
    }

    console.log(fun('[{()}][]{}'))
    console.log(fun('[{()}][]{}]'))