Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
roman numerals: https://en.wikipedia.org/wiki/Roman_numerals
Solution 1:
class Solution { public: inline int romanInt(const char c) { switch(c) { case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; default: return 0; } } int romanToInt(string s) { int result = 0; for(size_t i = 0; i < s.size(); ++i) { if(i > 0 && romanInt(s[i]) > romanInt(s[i - 1])) { result += (romanInt(s[i]) - 2 * romanInt(s[i - 1])); } else result += romanInt(s[i]); } return result; } };
Solution 2: