leetcode-13-roman to integer

Problem Description:

Given a roman numeral, convert it to an integer.

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

题目大意:

给定一个罗马数字,1-3999内,求对应的十进制数字

Solutions:

很简单,如果左边的比右边的小,说明左边的需要减去,右边的比左边的小或者相等就累加

Code in C++:

class Solution {
    public:
        int romanToInt(string s) {
            if(s.length()==0) return 0;
            if(s.length()==1) return letter2int(s[0]);
            int res=letter2int(s[0]);
            for(int i=1;i<s.length();i++)
                {
                    if(letter2int(s[i])>letter2int(s[i-1]))
                        res+=letter2int(s[i])-2*letter2int(s[i-1]);
                    else res+=letter2int(s[i]);
                }
            return res;

        }
        int letter2int(char a)
            {
                switch(a)
                    {
                        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;
                    }
            }
};