Спасибо всем огромное, самый мощный анклав JS-ниндзя, который я встречал.
Вот два решения:
function validBraces(braces) {
var assoc = {
'(': ')',
'{': '}',
'[': ']'
},
stack = [],
char,
len,
i;
for (i = 0, len = braces.length; i < len; i += 1) {
char = braces[i];
if (assoc[char]) {
stack.push(char);
} else {
if (char !== assoc[stack.pop()]) {
return false;
}
}
}
return !stack.length;
}
function validBraces(braces) {
var pattern = /\(\)|\{\}|\[\]/g;
while (pattern.test(braces)) {
braces = braces.replace(pattern, '');
}
return !braces.length;
}