# 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;
};
``````