diff --git a/logic-exercises/package.json b/logic-exercises/package.json index eb6d6ea..6291264 100644 --- a/logic-exercises/package.json +++ b/logic-exercises/package.json @@ -5,7 +5,9 @@ "main": "index.js", "scripts": { "ex1": "clear && tsnd --transpile-only --ignore-watch node_modules src/exc1.ts", - "ex2": "clear && tsnd --transpile-only --ignore-watch node_modules src/exc2.ts" + "ex2": "clear && tsnd --transpile-only --ignore-watch node_modules src/exc2.ts", + "ex3": "clear && tsnd --transpile-only --ignore-watch node_modules src/exc3.ts", + "ex4": "clear && tsnd --transpile-only --ignore-watch node_modules src/exc4.ts" }, "keywords": [], "author": "Daniel Ratti", diff --git a/logic-exercises/src/exc3.ts b/logic-exercises/src/exc3.ts new file mode 100644 index 0000000..4781700 --- /dev/null +++ b/logic-exercises/src/exc3.ts @@ -0,0 +1,25 @@ +export const checkParentheses = (str: string) => { + 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; +}; diff --git a/logic-exercises/src/exc4.ts b/logic-exercises/src/exc4.ts new file mode 100644 index 0000000..ae387f7 --- /dev/null +++ b/logic-exercises/src/exc4.ts @@ -0,0 +1,20 @@ +export const houseThief = (houses: number[]) => { + if (houses.length === 1) { + return houses[0]; + } else if (houses.length === 0) { + return 0; + } + + let currentMax: number = 0; + let prevMax: number = 0; + + for (let i = 0; i < houses.length; i++) { + let currentHouse = houses[i]; + let newMax = Math.max(currentMax, prevMax + currentHouse); + prevMax = currentMax; + currentMax = newMax; + } + + return currentMax; +}; +console.log(houseThief([1, 3, 5, 4, 2]));