Skip to content

Instantly share code, notes, and snippets.

@kissarat
Last active October 29, 2021 06:52
Show Gist options
  • Save kissarat/67d79940b77d7b13673c6a421def6b32 to your computer and use it in GitHub Desktop.
Save kissarat/67d79940b77d7b13673c6a421def6b32 to your computer and use it in GitHub Desktop.
Validates nested brackets
const closing = {
')': '(',
']': '[',
'>': '<'
};
const openBrackets = Object.values(closing)
function verify(str) {
const bracketsCount = []
for (let i = 0; i < str.length; i++) {
const char = str.charAt(i);
if(openBrackets.indexOf(char) >= 0) {
bracketsCount.push(char)
} else if (char in closing) {
const openBracket = closing[char];
if (openBracket === bracketsCount[bracketsCount.length - 1]) {
bracketsCount.pop()
} else {
return 0
}
}
}
return bracketsCount.length > 0 ? 0 : 1;
}
const testVerify = () => [
1 === verify("---(++++)----"),
1 === verify(""),
1 === verify("before ( middle []) after "),
0 === verify(") ("),
0 === verify("<( >)"),
1 === verify("( [ <> () ] <> )"),
0 === verify(" ( [)")
].every(a => a)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment