1 回答

TA贡献1995条经验 获得超2个赞
const validBraces = function(str) {
// 匹配括号
let brackets = str.match(/[\[\]\(\)\{\}]/g),
arr = [],
symbol;
for (var i in brackets) {
switch (brackets[i]) {
case '(':
arr.push('(');
break;
case '[':
arr.push('[');
break;
case '{':
arr.push('{');
break;
case ')':
symbol = arr.pop();
if (symbol !== '(') return false;
break;
case ']':
symbol = arr.pop();
if (symbol !== '[') return false;
break;
case '}':
symbol = arr.pop();
if (symbol !== '{') return false;
break
}
}
// 当存在 (() 这样的情况时, 上面的都能通过, 最后需要检测一下arr的长度
return arr.length > 0 ? false : true;
}
// 测试
console.log(validBraces("(){}[]"));//true
console.log(validBraces("(}"));//false
console.log(validBraces("[(])"));//false
console.log(validBraces("([{}])"));//true
添加回答
举报