## Problem

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

## Analysis

We traverse the string and add up each char by its value.

We need to handle a special case such as: IV, in which we have V-I = 4

In this case, we need to have I+V **– 2*I** = 4

## Solution

class Solution { public: int romanToInt(string s) { if(s.empty()) return 0; unordered_map<char, int> map({{'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}}); int val = 0; for(int i=0; i<s.size(); i++){ //Traverse and add the value val += map[s[i]]; //Handle case like: IV = 4, as in the traverse we have added I(1) and V(5), we need to substract twice of I if(i>0 && map[s[i]] > map[s[i-1]]) val -= 2*map[s[i-1]]; } return val; } };