# Roman to Integer ( C++ )

Leetcode: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.

In order to solve this problem, I needed to first understand how to read roman numerals and translate them my hand.

https://www.mathsisfun.com/roman-numerals.html has a clear and concise explanation of a roman numerals. For this problem this chart is the only thing you need to really understand:

Rules of calculating Roman >> Integer

1. (ADDING) The value of each symbol is (generally) added together from left to right:
• MMLVII (1,000+1,000+50+5+1+1) = 2,057

2. (SUBTRACTING) When there is a smaller number placed before a larger number

• XIX (10 + (10 − 1)) = 19

A simple solution was to have a for loop loop through each character in the string containing roman numerals and convert them to their integer value. Do calculations to the total as dictated by the above 2 rules of adding and subtracting.

`int romanToInt(string s) {                int total = 0;        for(int i = 0; i < s.length(); i++){                    //1.The letters are arranged from left to right         in descending order of value to form a number            if(integer_of(s[i])  <= interger_of[s[i]]) {              total += integer_of(s[i]);            }        //2.when you see a lower value in front of a         higher value (subtract)            else  {              total += integer_of(s[i]);            }        }`
`        return total;    }`

Best way to store the table to convert roman numerals to their corresponding integer values is by using a hash map:

`map<char, int> m = {{'I', 1}, {'V', 5},{'X', 10},{'L', 50},{'C', 100},{'D', 500},{'M', 1000}};`

Putting it all together:

`int romanToInt(string s) {                map<char, int> m = {{'I', 1}, {'V', 5},{'X', 10},{'L', 50},        {'C', 100},{'D', 500},{'M', 1000}};                int total = 0;        for(int i = 0; i < s.length(); i++){            if(m[s[i+1]] <= m[s[i]])  total += m[s[i]];             else  total -= m[s[i]];          }        return total;    }`

Easy-Peasy Lemon Squeezy!

As always, I welcome feedback and discussion.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.