leetcode_Roman to Integer_easy_可以看看方法

Given a roman numeral, convert it to an integer.

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

主要弄清楚羅馬數字的表示方法:

I - 1

II- 2

III-3

IV-4

V - 5

X - 10

L - 50

C - 100

D - 500

M - 1000


class Solution {
public:
    int romanToInt(string s) {
        map<char,int> mapVal;
        mapVal.insert(pair<char,int>('I',1));
        mapVal.insert(pair<char,int>('V',5));
        mapVal.insert(pair<char,int>('X',10));
        mapVal.insert(pair<char,int>('L',50));
        mapVal.insert(pair<char,int>('C',100));
        mapVal.insert(pair<char,int>('D',500));
        mapVal.insert(pair<char,int>('M',1000));
        int len=s.length(),res=0,i;
        for(i=0; i<len-1; )
        {
            if(mapVal[s[i]]>=mapVal[s[i+1]])//單個字符代表數值的情況比如V代表5
            {
                res+=mapVal[s[i]];
                i++;
            }
            else//2個字符代表數值的情況,比如IV代表4
            {
                res+=mapVal[s[i+1]]-mapVal[s[i]];
                i=i+2;
            }   
        }
        if(i==len-1)
            res+=mapVal[s[i]];
        return res;
    }
};



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