Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Excerpt

Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.


SymbolValue
I1
V5
X10
L50
C100
D500
M1000

For example, two is written as II in Roman numeral, just two one's added together. Twelve is written as, XII, which is simply X + II. The number twenty seven is written as XXVII, which is XX + V + II.

...

Code Block
class Solution {
public:
    int romanToInt(string s) {
        vector<string> NumStr[4]={
            { "I","II","III", "IV", "V", "VI", "VII", "VIII", "IX"},
            { "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
            { "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},
            { "M", "MM", "MMM", }
        };
        int ret=0;
        int d_pos=3;
        int s_pos=0;
        int s_len=s.length();
        while(( s_pos<s_len) && (d_pos>=0)) {            
            for(int i=NumStr[d_pos].size()-1;i>=0;i--) {
                int d_length = NumStr[d_pos][i].length();
                if (NumStr[d_pos][i]==s.substr(s_pos,d_length)) {
                    ret += (pow(10,d_pos)*(i+1));
                    s_pos += d_length;
                    break;
                }
            }
            d_pos--;
        }
        return ret;
    }
};

...