Roman to Integer -- LeetCode 13

Posted on 2016-04-12 14:27  徐岩  阅读(108)  评论(0)    收藏  举报

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: