Given a roman numeral, convert it to an integer.

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

 简单的字符转化,将读取的字符每一位转化为对应数字,再计算。时间:58ms

代码如下:

class Solution {
public:
    int romanToInt(string s) {
        int num = 0;
        int n = s.size();
        for (int i = 0; i < n; ++i){
            if (i < n - 1 && toNumber(s[i]) < toNumber(s[i + 1])){
                num += toNumber(s[i + 1]) - toNumber(s[i]);
                ++i;
            }
            else{
                num += toNumber(s[i]);
            }
        }
        return num;
    }
    int toNumber(char ch) {
        switch (ch) {
        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;
        }
        return 0;
    }
};

 

posted on 2015-04-16 22:46  NealCaffrey989  阅读(123)  评论(0编辑  收藏  举报