 # Roman to Integer solution using TypeScript

Below is my TypeScript solution to the LeetCode "Roman to Integer" question.

Time Complexity: Because each character in the string will be visited only one time, and the string is of a limited length, the time complexity is O(1). If there were not a limit on the length of the string, the approach would have a time complexity of O(n).

Space Complexity: This approach will also use a constant amount of space, so the space complexity is O(1).

``````/**
* Find the numerical value of a given string representing
* a Roman Numeral. For this exercise, Input is guaranteed
* to be within the range from 1 to 3999.
*
*   Time Complexity: O(1)
*   Space Complexity: O(1)
*
*   Input: "MCMXCIV"
*   Output: 1994
*   Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
*/
function romanToInt(s: string): number {
const map = new Map([
['I',  1],
['IV', 4],
['V',  5],
['IX', 9],
['X',  10],
['XL', 40],
['L',  50],
['XC', 90],
['C',  100],
['CD', 400],
['D',  500],
['CM', 900],
['M',  1000]
]);
let result = 0;

for(let i = 0; i < s.length; i++) {
const twoSymbols = map.get(s[i] + s[i + 1]);
const oneSymbol = map.get(s[i]);
if (twoSymbols) {
i += 1; // skip iteration of next symbol
}
result += twoSymbols || oneSymbol || 0;
}

return result;
};
``````

## more LeetCode posts Design HashSet solution using TypeScript Fizz Buzz solution using TypeScript Pascal's Triangle solution using TypeScript Min Stack solution using TypeScript Symmetric Tree solution using TypeScript Same Tree solution using TypeScript