JSFiddle - React, Tailwind, and code Playground

by alirokni

HTML

<h1>Stack and Queue</h1>

<div>http://interactivepython.org/runestone/static/pythonds/BasicDS/BalancedSymbols(AGeneralCase).html</div>
<div id="one"></div>
<div id="two"></div>
<div id="three"></div>

JavaScript

function parChecker(symbolString) {
    var s = [],
        top = [],
        balanced = true,
        index = 0;
    while (index < symbolString.length && balanced) {
        var symbol = symbolString[index];
        if (symbol.indexOf("(") >= 0 || symbol.indexOf("[") >= 0 || symbol.indexOf("{") >= 0) {
            s.unshift(symbol);
        } else {
            if (s.length === 0) {
                balanced = false;
            } else {
                top = s.shift();
                if (!matches(top, symbol)) {
                    balanced = false;
                }
            }
        }
        index = index + 1;
    }

    if (balanced && s.length === 0) {
        return true;
    } else {
        return false;
    }
}

function matches(open, close) {
    opens = "([{";
    closers = ")]}";
    return (opens.indexOf(open) == closers.indexOf(close));
}

document.getElementById('one').innerHTML = parChecker('{{([][])}()}');
document.getElementById('two').innerHTML = parChecker('[()]{}{{}');