编辑代码

//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
//  '{}[]()','{[(}{})]}','[}' 匹配返回ture 反之false
// 括号匹配 最后一个左括号一定是要闭合状态( 他的后面一定跟着右括号)
// 最后一个出现的括号第一个闭合
//流程 遍历每一个字符,如果是左括号加入到stack中,
//如果是右括号和stack的最后一个元素结合如果是闭合状态,把stack数组内的最后一个元素移除
//如果不匹配 返回 false
// 知道循环结束

function check(str){
    var stack = [], flag = true
    str.split('').forEach(item=>{
        if(item == '{' || item == '[' || item == '(') {
            stack.push(item)
            return
        }
        var concatStr = stack[stack.length - 1] + item
        if (concatStr == "{}" || concatStr == "[]" || concatStr == "()"){
            stack.pop()
        }else{
            flag = false
        }
    })
    return flag
}
console.log(check('{[()()]}'))