解题思路
{[]} 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;
}