如何在javascript中正确打开和关闭方括号字符串



请有人帮我。我需要为一个括号字符串编写一个函数。该字符串具有任意数量的(, ), [, ], {, and }。一个有效的字符串遵循开括号和闭括号的常识规则,所以换句话说,形式规则是:

每种类型的左括号和右括号数量相等。每个支架先打开,然后使用相同类型的支架关闭。

当一个特定的括号打开时,每隔一对打开的封闭括号都应该在封闭括号关闭之前关闭。

例如,{[()[]]()}()是有效的,但[(])不是。

每个打开的标记都必须关闭,因此可以使用stack

let correct = 'my st(ring) [ok] {hello}';
let uncorrect = 'my st(ring) [o(k] {hello}';
syntaxChecker = (str) => {
let stack = [];
// For each char in the string
[...str].forEach(c => {
// opened char ? add to the stack
if ('([{'.includes(c)){
stack.push(c);
}
// closed char ? check if match the last opened
else if (')]}'.includes(c)){
let top = stack.pop();
if (! (c === ')' && top === '('
|| c === ']' && top === '['
|| c === '}' && top === '{')){
stack.push(c);
}
}
});
// stack empty = correct
return stack.length === 0;
}
console.log(syntaxChecker(correct)); // true
console.log(syntaxChecker(uncorrect)); // false

最新更新