20.有效括号

121 阅读1分钟

解题思路

{[]}  true

对于没有闭合的左括号来说,越靠后的左括号对应的右括号越靠前。 因此用栈来解决

代码实现

function fn1(str){
    if(str.length % 2 === 1){
        return false;
    }
    const arr = [];
    for(let i = 0;i < str.length; i++){
        const item = str[i];
        //左括号入栈
        if(item === "(" || item === "{" || item ==="["){
            arr.push(item);
        }else{
        //拿到栈顶元素
            const top = arr[arr.length - 1];
            if(
                //左右括号匹配
                (top == "(" && item === ")")||
                (top == "[" && item === "]")||
                (top == "{" && item === "}")
            ){
            //合法出栈
                arr.pop()
            }else{
                return false;
            }
        }
    }

    return arr.length === 0;
}