Javascript 有效括号故障排除
我正在处理一个涉及有效括号的编码挑战,我正在尝试解决为什么它不能给我预期的响应Javascript 有效括号故障排除,javascript,algorithm,Javascript,Algorithm,我正在处理一个涉及有效括号的编码挑战,我正在尝试解决为什么它不能给我预期的响应 function isValid(str) { if (str.length === 0) return true let matchingOpeningBracket, char let stack = [] let openingBrackets = ['[', '<', '('] let closingBrackets = [']', '>', ')'] f
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)
};
函数有效(str){
如果(str.length==0)
返回真值
让匹配开始括号,char
让堆栈=[]
让opening括号=['[',')']
for(设i=0;i-1){
匹配打开括号=打开括号[ClosingBrands.indexOf(char)]
if(stack.length==0 | |(stack.pop()!=匹配开始括号)){
返回错误
}
}否则{
stack.push(字符)
}
}
返回值(stack.length==0)
};
当我尝试检查console.log(isValid('-(++++)+-')和console.log(isValid('before(middle[])after'))时,它给了我一个假值,但根据质询键,它应该作为true传递。我不确定我缺少了哪一步。除前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 = ("([)")
//true//返回false
//让我们举个例子1=(“之前(中间[])之后”)
//true//返回false
//让我们举个例子1=(“--”(+++++)--”)
//真的
//让示例1=(“”)
//假的
//例如,1=(“”(“”)
//假的
//例如,1=(“”)
//真的
//让我们举个例子1=(“([()])”)
//假的
//让我们举个例子1=(“([)”)
当您应该忽略既不是开始括号也不是结束括号的字符时,您正在将所有非结束括号的字符都推到堆栈上。请将else条件更改为:
else if (openingBrackets.indexOf(char) > -1) {
您正在将每个不是左括号的字符推送到堆栈上。您只想将左括号推送到堆栈上
请注意,只要字符串中有非括号字符,就会得到一个
false
结果。我绝对不想让事情复杂化,所以我给出了一个简单的解决方案,如果您认为合适,可以使用它:)
函数有效(str){
如果(str.length==0)
返回真值
让char;
让堆栈=[];
让opening括号=['[',')']
匹配打开=(val)=>(val=='['| | val===''| | val==']))
getOpeningBracket=(val)=>{
开关(val){
案例']':
返回“[”;
案例“)”:
返回“(”;
案例“>”:
返回'