#include using std::string; int romanDigitNumber(char romanDigit) { switch (romanDigit) { 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; }; return 0; } class Solution { public: int romanToInt(string s) { int result = 0; int count = s.size(); for (int i = 0; i < count; i++) { const char c = s[i]; int num = romanDigitNumber(c); if (i < count - 1) { const char next = s[i + 1]; if ((c == 'I' && (next == 'V' || next == 'X')) || (c == 'X' && (next == 'L' || next == 'C')) || (c == 'C') && (next == 'D' || next == 'M')) { num = -num; } } result += num; } return result; } };