/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
if (s === "") return true;
if (s.length < 2) return false;
const stack = [];
const map = {
'(': ')',
'{': '}',
'[': ']'
}
for (let char of s) {
// push opener onto stack
if (char === '(' || char === '{' || char === '[') {
stack.push(char);
// compare stack top with closer
} else if (map[stack.pop()] !== char) {
return false;
}
}
// not empty means string was unbalanced
if (stack.length !== 0) return false;
return true;
};