diff --git a/valid-parentheses/Cyjin-jani.js b/valid-parentheses/Cyjin-jani.js new file mode 100644 index 0000000000..d522b58364 --- /dev/null +++ b/valid-parentheses/Cyjin-jani.js @@ -0,0 +1,34 @@ +// tc: O(n) +// sc: O(n) +const isValid = function (s) { + const bracketMap = { + '(': ')', + '{': '}', + '[': ']', + }; + + if (s.length % 2 !== 0 || isCloseBracket(s[0])) return false; + + const stack = []; + + for (let i = 0; i < s.length; i++) { + if (stack.length === 0) { + stack.push(s[i]); + continue; + } + + let topBracket = stack.pop(); + if (bracketMap[topBracket] !== s[i]) { + stack.push(topBracket); + stack.push(s[i]); + } + } + + return stack.length === 0; +}; + +function isCloseBracket(char) { + const closeBrackets = [')', '}', ']']; + + return closeBrackets.includes(char); +}