Balanced Brackets

  • + 2 comments

    Good job!

    Same concept, but with some performance enhancements:

    function isBalanced(s) {
        // concept: must come out in same order
        const map = {
            '[': ']'
            ,'(': ')'
            ,'{': '}'
        },tracker = []
        for (let i=0;i<s.length;++i) {
            const c = s[i]
            switch (c) {
                case '[':
                case '(':
                case '{':
                    tracker.push(map[s[i]])
                    break
                case ']':
                case ')':
                case '}':
                    if (tracker.pop() != c) {
                        return 'NO'
                    }
            }
        }
        return tracker.length == 0 ? 'YES' : 'NO'
    }