mirror of
https://github.com/theoludwig/programming-challenges.git
synced 2024-12-08 00:45:29 +01:00
feat(solutions): add valid-parentheses/javascript/function
This commit is contained in:
parent
f28d1b816d
commit
9b925eea92
@ -0,0 +1,3 @@
|
||||
# valid-parentheses/javascript/function
|
||||
|
||||
Created by [@theoludwig](https://github.com/theoludwig) on 18 November 2024.
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
import readline from "node:readline"
|
||||
|
||||
const input = []
|
||||
const readlineInterface = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout,
|
||||
})
|
||||
readlineInterface.on("line", (value) => {
|
||||
input.push(value)
|
||||
})
|
||||
readlineInterface.on("close", solution)
|
||||
|
||||
function solution() {
|
||||
console.log(isValidParentheses(input[0]))
|
||||
}
|
||||
|
||||
const mapCloseOpen = {
|
||||
")": "(",
|
||||
"]": "[",
|
||||
"}": "{",
|
||||
}
|
||||
const closeCharacters = Object.keys(mapCloseOpen)
|
||||
const openCharacters = Object.values(mapCloseOpen)
|
||||
|
||||
/**
|
||||
* @param {string} string
|
||||
* @return {boolean}
|
||||
*/
|
||||
const isValidParentheses = (string) => {
|
||||
const stack = []
|
||||
for (let index = 0; index < string.length; index++) {
|
||||
if (openCharacters.includes(string[index])) {
|
||||
stack.push(string[index])
|
||||
} else if (closeCharacters.includes(string[index])) {
|
||||
const last = stack.pop()
|
||||
if (last !== mapCloseOpen[string[index]]) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
return stack.length <= 0
|
||||
}
|
Loading…
Reference in New Issue
Block a user