利用栈来存储遍历的结果,每次将栈顶元素与当前元素进行匹配。判断是否能够组成括号,不能就push进去,能就将栈顶元素pop出来。
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
const len = s.length;
let ret = [];
for (let i = 0; i < len; i++) {
if (ret.length) {
let top = ret.pop();
if (['()', '{}', '[]'].includes(top + s[i])) {
continue;
}
else {
ret.push(top);
ret.push(s[i]);
}
}
else {
ret.push(s[i]);
}
}
return !ret.length;
};