diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..4a2ea06 Binary files /dev/null and b/.DS_Store differ diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..24d6115 Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/brackets/index.js b/src/brackets/index.js index 96b6766..89cc154 100644 --- a/src/brackets/index.js +++ b/src/brackets/index.js @@ -4,6 +4,42 @@ * @param {string} str The string of brackets. * @returns {"valid" | "invalid"} Whether or not the string is valid. */ -function isValid(str) {} + + + + +function isValid(str) { + + const stack = []; + let bracketsString = { + '(':')', + '{':'}', + '[':']', + }; + + for (let i = 0; i < str.length; i++) { + let char = str[i]; + if (bracketsString[char]) { + stack.push(char); + } else if (char == ')' || char == '}' || char == ']') { + let lastBracket = stack.pop(); + + if (bracketsString[lastBracket] != char) { + return "invalid"; + + } + } + } + + return stack.length == 0 ? "valid" : "invalid" + } + + // // Test cases + // const testStrings = //"({()}[()]}"; + // "{{{()[]" ; + //console.log(isValid(testStrings)) + + + module.exports = isValid; diff --git a/src/roman-numerals/index.js b/src/roman-numerals/index.js index 38afb19..4664c94 100644 --- a/src/roman-numerals/index.js +++ b/src/roman-numerals/index.js @@ -4,6 +4,34 @@ * @param {string} roman The all-caps Roman numeral between 1 and 3999 (inclusive). * @returns {number} The decimal equivalent. */ -function romanToDecimal(roman) {} +function romanToDecimal(roman) { + + let romanDict = { + 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000 + }; + + let decimal = 0; + let prevValue = 0; + + for (let i = roman.length - 1; i >= 0; i--) { + let symbol = roman[i]; + let value = romanDict[symbol]; + + if (value >= prevValue) { + decimal += value; + } else { + decimal -= value; + } + + prevValue = value; + } + + return decimal; +} + +let testCases = "XXIV"//expected: 24 'MCMXCIV', expected: 1994 }, + // Add more test cases here +//console.log() +console.log(romanToDecimal(testCases)); module.exports = romanToDecimal; diff --git a/src/transpose/index.js b/src/transpose/index.js index adec201..42c86c9 100644 --- a/src/transpose/index.js +++ b/src/transpose/index.js @@ -4,6 +4,17 @@ * @param {number[]} array The array to transpose * @returns {number[]} The transposed array */ -function transpose(array) {} +let numberArr = [ + [5, 12, 17, 9, 3], + [13, 4, 8, 14, 1], + [9, 6, 3, 7, 21], + ]; + +let newArr = transpose(numberArr); + +function transpose(array) { +return array[0].map((col, i) => array.map(row =>row[i])); +} +console.log(newArr) module.exports = transpose;