LeetCode Day11 roman_to_integer

利用字典

法一:

class Solution {
public:
    int romanToInt(string s) {
        int sum=0;
        unordered_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++){
            int val=m[s[i]];
            if(i==s.size()-1 || m[s[i+1]]<=m[s[i]]) sum+=val;
            else sum-=val;
        }
        return sum;
    }
};

法二:

暴力判断

class Solution {
public:
    int romanToInt(string s) {
        int len = s.size();
        if(len == 0)
            return 0;
        int sum = 0;
        for(int i=0; i<len; ++i){
            if(i !=len-1 && s[i]=='I' && (s[i+1] == 'V' || s[i+1] == 'X')){
                sum -= 1; continue;
            }
               
            if(i !=len-1 && s[i]=='X' && (s[i+1] == 'L' || s[i+1] == 'C')){
                sum -= 10; continue;
            }
               
            if(i !=len-1 && s[i]=='C' && (s[i+1] == 'D' || s[i+1] == 'M')){
                sum -= 100; continue;
            }
            // +1
            if(s[i] == 'I'){
                sum += 1; 
            }
            //+5
            if(s[i] == 'V'){
               sum += 5;
            }
            //+10
            if(s[i] == 'X'){
               sum += 10;             
            }
            //+50
            if(s[i] == 'L'){
               sum += 50; 
            }
            //+100
            if(s[i] == 'C'){
               sum += 100;
            }
            //+500
            if(s[i] == 'D'){
               sum += 500;
            }
            //+1000
            if(s[i] == 'M'){
               sum += 1000;
            }
        }
        return sum;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_41394379/article/details/82981657