13:Roman to Integer【數學】【字符串】

題目鏈接:click~

/*題意:給出一串羅馬數字,轉化成阿拉伯數學。羅馬數字值爲1~3999*/

/**
 *思路:注意處理比較特殊的羅馬數字,IV,IX,XL,XC,CD,CM,這些組合的值都是
 *      右邊較大的數字減去左邊較小的數字。
 *
 */


class Solution {
public:
    int romanToInt(string s) {
        map<char,int> mp = {{'I',1}, {'V',5}, {'X',10}, {'L',50}, {'C',100}, {'D',500}, {'M',1000}};
        int sum = mp[s[s.size()-1]];
        for(int i = s.size()-2; i >= 0; i --) {
            if(mp[s[i]] >= mp[s[i+1]])//處理由兩個字符組成的數字
                sum += mp[s[i]]; //左邊的數字比右邊的數字大
            else
                sum -= mp[s[i]]; //左邊的數字比右邊的數字小
        }
        return sum;
    }
};


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