leetcode(13)罗马数字转整数

方法一:
if-else语句:
分情况判断:

class Solution {
public:
    int romanToInt(string s) {
        int a=0;
        for(int i=0;i<s.size();i++){
            if(s[i]=='M'){
                a+=1000;
                }
            if(s[i]=='D'){
                a+=500;
            }
            if(s[i]=='C'){
                if(s[i+1]=='D'){
                    a+=400;
                    i++;
                    continue;
                }
                if(s[i+1]=='M'){
                    a+=900;
                    i++;
                    continue;
                }
                a+=100;
            }
            if(s[i]=='L'){
                a+=50;
            }
            if(s[i]=='X'){
                if(s[i+1]=='L'){
                    a+=40;
                    i++;
                    continue;
                }
                if(s[i+1]=='C'){
                    a+=90;
                    i++;
                    continue;
                }
                a+=10;
            }
            if(s[i]=='V'){
                a+=5;
            }
             if(s[i]=='I'){
                if(s[i+1]=='V'){
                    a+=4;
                    i++;
                    continue;
                }
                if(s[i+1]=='X'){
                    a+=9;
                    i++;
                    continue;
                }
                a+=1;
            }
        }
        return a;
    }
};

方法二:
map:

class Solution {
public:
    int romanToInt(string s) {
        int num=0;
        map<char, int> m = { {'I',1} ,{'V', 5} ,{'X', 10},{'L', 50} ,{'C', 100} ,{'D', 500} ,{'M', 1000} };
        for (int i = 0; i < s.size(); i++)
        {
            if (m[s[i]] >= m[s[i + 1]])
            {
                num = m[s[i]]+num;
            }
            else
            {
                num = m[s[i+1]] - m[s[i]]+ num;
                i++;
            }
        }
        return num;
    }
};

你可能感兴趣的:(leetcode)