我正在尝试求解有效的括号,如标题所述,我不知道如何在此上下文中使用Array.push
。
function isValidPar(par){
var stack = [];
var length = par.length;
for (var i=0; i<length; i++) {
var p = par[i];
if(p === "(" || p === "{" || p === "[") {
stack.push(p);
} else if(p === ")") {
if(stack.length === 0 || stack[stack.length-1] != "(") {return false}
stack.pop();
} else if(p === "]") {
if(stack.length === 0 || stack[stack.length-1] != "[") {return false}
stack.pop();
} else if(p === "}") {
if(stack.length === 0 || stack[stack.length-1] != "{") {return false}
stack.pop();
} return stack.length === 0;
}
}
如果我在stack.push()
之后立即进行console.log
,则显示我刚插入的元素。但是,当我在其他任何地方(例如else if
语句或return
之前)尝试它时,似乎数组是空的。
这是您的代码的更正版本
function isValidPar(par){
var stack = [];
var length = par.length;
for (var i=0; i<length; i++) {
var p = par[i];
if(p === "(" || p === "{" || p === "[") {
stack.push(p);
} else if(p === ")") {
if(stack.length === 0 || stack[stack.length-1] != "(") {return false}
stack.pop();
} else if(p === "]") {
if(stack.length === 0 || stack[stack.length-1] != "[") {return false}
stack.pop();
} else if(p === "}") {
if(stack.length === 0 || stack[stack.length-1] != "{") {return false}
stack.pop();
}
}
return stack.length === 0;
}
console.log(isValidPar('(())'));
return stack.length === 0;
应检查一旦for循环完成