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('[()]{}{{}');