Roman to Integer

Given a roman numeral, convert it to an integer.

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

和整數轉羅馬數字一樣,根據轉換規則轉換。

class Solution {
public:
    //分析最近的兩個字符,如果i字符比i-1字符小,那麼此時應該是sum += value[i]
    //否則,就應該向4類似的處理,但是由於value[i - 1],在i-1的時候已經加了一次,
    //所以sum = sum - value[i - 1] + value[i] - value[i - 1];
    int romanToInt(string s) {
        int len = s.length();
        unordered_map<char, int> mask;
        mask['I'] = 1;
        mask['V'] = 5;
        mask['X'] = 10;
        mask['L'] = 50;
        mask['C'] = 100;
        mask['D'] = 500;
        mask['M'] = 1000;
        int sum = mask[s[0]];
        for(int i = 1; i < len; i++)
        {
            if(mask[s[i - 1]] >= mask[s[i]])
            {
                sum += mask[s[i]];
            }
            else
            {
                sum += mask[s[i]] - 2 * mask[s[i - 1]];
            }
        }
        return sum;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章