hanCodeHub
3/12/2020 - 11:15 PM

Matching Parentheses

/**
 * @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;
};