【发布时间】:2021-03-13 18:33:21
【问题描述】:
我正在处理一个涉及有效括号的编码挑战,我正在尝试解决为什么它没有给我预期的响应。
function isValid(str) {
if (str.length === 0)
return true
let matchingOpeningBracket, char
let stack = []
let openingBrackets = ['[', '<', '(']
let closingBrackets = [']', '>', ')']
for (let i = 0; i < str.length; i++) {
char = str[i]
if (closingBrackets.indexOf(char) > -1) {
matchingOpeningBracket = openingBrackets[closingBrackets.indexOf(char)]
if (stack.length == 0 || (stack.pop() != matchingOpeningBracket)) {
return false
}
} else {
stack.push(char)
}
}
return (stack.length == 0)
};
当我尝试检查 console.log(isValid('---(++++)---')) 和 console.log(isValid('before(middle[])after')) 它给出我是一个错误的值,但它应该根据挑战键传递为真。我不确定我错过了哪一步。除了前 2 个之外,其他测试示例均按预期进行记录。
//true // returns false
// let example1 = ("before(middle[])after")
//true //returns false
// let example1 = ("---(++++)---")
//true
// let example1 = ("")
//false
// let example1 = (")(")
//false
// let example1 = ("<(>)")
//true
// let example1 = ("([<>()])")
//false
// let example1 = ("([)")
【问题讨论】:
标签: javascript algorithm