题目描述:

Given a roman numeral, convert it to an integer.

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

与第12题相反, 同样是简单模拟:

class Solution {
public:
    int romanToInt(string s) {
        int ret = 0;

        int last_weight = -1;
        for(int i = s.length() - 1; i >= 0; i--){
            int w = symbolToVal(s[i]);
            if(w < last_weight)
                ret -= w;
            else{
                last_weight = w;
                ret += w;
            }
        }

        return ret;
    }
    
    int symbolToVal(char s){
        switch(s){
            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 -1;
        }
    }
};