From 372f4dbaad823dc7f7650bde3b845950673c689c Mon Sep 17 00:00:00 2001 From: Luiz Ricardo da Silva Date: Thu, 3 Feb 2022 19:01:06 -0300 Subject: [PATCH] =?UTF-8?q?Exerc=C3=ADcio=20do=20Dia=20-=20Checa=20Par?= =?UTF-8?q?=C3=AAnteses=20V=C3=A1lidos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exercise-day-3/checkParenthesis.js | 28 +++++++++++++++++++ .../exercise-day-3/checkParenthesis.test.ts | 0 .../exercise-day-3/checkParenthesis.ts | 28 +++++++++++++++++++ logic-exercises/exercise-day-3/package.json | 13 +++++++++ 4 files changed, 69 insertions(+) create mode 100644 logic-exercises/exercise-day-3/checkParenthesis.js create mode 100644 logic-exercises/exercise-day-3/checkParenthesis.test.ts create mode 100644 logic-exercises/exercise-day-3/checkParenthesis.ts create mode 100644 logic-exercises/exercise-day-3/package.json diff --git a/logic-exercises/exercise-day-3/checkParenthesis.js b/logic-exercises/exercise-day-3/checkParenthesis.js new file mode 100644 index 0000000..e7b1056 --- /dev/null +++ b/logic-exercises/exercise-day-3/checkParenthesis.js @@ -0,0 +1,28 @@ +function checkParenthesis(str) { + var stack = []; + for (var _i = 0, str_1 = str; _i < str_1.length; _i++) { + var char = str_1[_i]; + if (char === "(" || char === "[" || char === "{") { + stack.push(char); + } + else { + var lastOpeningChar = stack.pop(); + if (!lastOpeningChar) { + return false; + } + else if ((lastOpeningChar === "(" && char !== ")") || + (lastOpeningChar === "[" && char !== "]") || + (lastOpeningChar === "{" && char !== "}")) { + return false; + } + } + } + if (stack.length > 0) { + return false; + } + return true; +} +console.log(checkParenthesis("()")); +console.log(checkParenthesis("(]")); +console.log(checkParenthesis("({})")); +console.log(checkParenthesis("([})")); diff --git a/logic-exercises/exercise-day-3/checkParenthesis.test.ts b/logic-exercises/exercise-day-3/checkParenthesis.test.ts new file mode 100644 index 0000000..e69de29 diff --git a/logic-exercises/exercise-day-3/checkParenthesis.ts b/logic-exercises/exercise-day-3/checkParenthesis.ts new file mode 100644 index 0000000..7c0f908 --- /dev/null +++ b/logic-exercises/exercise-day-3/checkParenthesis.ts @@ -0,0 +1,28 @@ +function checkParenthesis(str) { + const stack = [] + for (let char of str) { + if (char === "(" || char === "[" || char === "{") { + stack.push(char) + } else { + const lastOpeningChar = stack.pop() + if(!lastOpeningChar) { + return false + } else if ( + (lastOpeningChar === "(" && char !== ")") || + (lastOpeningChar === "[" && char !== "]") || + (lastOpeningChar === "{" && char !== "}") + ) { + return false + } + } + } + if (stack.length > 0) { + return false + } + return true +} + +console.log(checkParenthesis("()")) +console.log(checkParenthesis("(]")) +console.log(checkParenthesis("({})")) +console.log(checkParenthesis("([})")) \ No newline at end of file diff --git a/logic-exercises/exercise-day-3/package.json b/logic-exercises/exercise-day-3/package.json new file mode 100644 index 0000000..5c04ade --- /dev/null +++ b/logic-exercises/exercise-day-3/package.json @@ -0,0 +1,13 @@ +{ + "name": "exercise-day-3", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start":"clear && tsc --outFile checkParenthesis.js checkParenthesis.ts && node checkParenthesis.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +} \ No newline at end of file