13. Roman to Integer
罗马数字转整数,写了一堆if else之后打算改成switch,等等,我刷leetcode不是想学c++吗,那用c++应该会简单不少。
解法如下:

class Solution {
public:
    int romanToInt(string s) 
    {
        map<char, int> T = { { 'I' , 1 },
                                       { 'V' , 5 },
                                       { 'X' , 10 },
                                       { 'L' , 50 },
                                       { 'C' , 100 },
                                       { 'D' , 500 },
                                       { 'M' , 1000 } };

       int sum = T[s.back()];
       for (int i = s.length() - 1; i >= 1; --i) 
       {
           if (T[s[i]] > T[s[i - 1]])
           {
               sum -= T[s[i-1]];
           }
           else
           {
               sum += T[s[i-1]];
           }
       }

       return sum;
    }
};

从后开始遍历,如果后一个比前一个小,那么再加了后面对应的值的基础上减去前一个字符对应的值。