JSFiddle - React, Tailwind, and code Playground

by Steven Senkus

JavaScript

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    let stack = [];
    
    
    for (let i = 0; i < s.length; i++) {
        let currentChar = s[i];
        if (['(', '[', '{'].find((el) => {
                return el === currentChar;
            })) {
            stack.push(currentChar);
        } else {
            let lastCharOnStack = stack[stack.length - 1];
            switch (currentChar) {
                case ')':
                    (lastCharOnStack === '(') ? stack.pop() : stack.push(currentChar);
                    break;
                case '}':
                    (lastCharOnStack === '{') ? stack.pop() : stack.push(currentChar);
                    break;
                case ']':
                    (lastCharOnStack === '[') ? stack.pop() : stack.push(currentChar);
                    break;
                default:
                    stack.push(currentChar);
            }
        }
    }

    return stack.length === 0;
};

console.log('IS VALID?', isValid('()[]{}') === true);