主要理解栈的先进后出(FILO)概念,下面是用js代码实现
// 括号匹配算法
function isValid(str){
let strArr = str.split(''),
left = [];// 空栈
for(let i=0;i<strArr.length;i++){
if(strArr[i] == '(' || strArr[i] == '[' || strArr[i] == '{'){
left.push(strArr[i]) //左括号入栈
}else{
if(strArr[i] == ')' && left.pop() != '('){
return false //结束循环
}
if(strArr[i] == ']' && left.pop() != '['){
return false
}
if(strArr[i] == '}' && left.pop() != '{'){
return false
}
}
}
return left.length == 0
}
let test = '{9()32358}'
console.log(isValid(test))
测试结果