Skip to content

Instantly share code, notes, and snippets.

@197291
Last active February 12, 2019 08:30
Show Gist options
  • Save 197291/1aeec78d9c91c40c142a7c27835378ab to your computer and use it in GitHub Desktop.
Save 197291/1aeec78d9c91c40c142a7c27835378ab to your computer and use it in GitHub Desktop.
let brackets = {
"[": "]",
"{": "}",
"(": ")",
"<": ">"
}
function correctBrackets (str) {
const vals = Object.keys(brackets).map(key => brackets[key]);
const keys = Object.keys(brackets);
if (vals.indexOf(str[0]) + 1) {
return null;
}
let mass = str.split('');
let stack = [];
for (let i = 0; i < mass.length; i++) {
const l = mass[i];
if (keys.indexOf(l) + 1) {
stack.push(l);
} else {
if (stack.length) {
mass[i] = brackets[stack.shift()];
} else {
return null;
}
}
}
if (stack.length) {
return null;
}
return mass.join('');
}
function isValidBrackets(str) {
if (str.length <= 1)
return false
let matchingOpeningBracket, ch
let stack = []
let openingBrackets = ['[', '{', '(']
let closingBrackets = [']', '}', ')']
for (let i = 0; i < str.length; i++) {
ch = str[i]
if (closingBrackets.indexOf(ch) > -1) {
matchingOpeningBracket = openingBrackets[closingBrackets.indexOf(ch)]
if (stack.length == 0 || (stack.pop() != matchingOpeningBracket)) {
return false
}
} else {
stack.push(ch)
}
}
return (stack.length == 0)
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment