【LeetCode013】Roman to Integer

#include <iostream>
#include <string>
using namespace std;

class Solution {
public:
    int romanToInt(string s) {
        int length = s.length();
        int sum = 0;
        for(int i =  0; i < length; ++i){
            switch(s[i]){    //大括号
                case 'I':    //case判断语句没有括号,句尾加冒号,语句块也不需要大括号
                    if(i<length-1 && s[i+1]=='V'){
                        sum += 4;
                        ++i;}    //两个字符连起来的时候,这里先主动加1
                    else if(i<length-1 && s[i+1]=='X'){
                        sum += 9;
                        ++i;}
                    else
                        sum += 1;
                    break;    //此处不加break就会一直往下执行switch的语句块
                case 'V':
                    sum += 5;
                    break;
                case 'X':
                    if(i<length-1 && s[i+1]=='L'){
                        sum += 40;
                        ++i;
                    }
                    else if(i<length-1 && s[i+1]=='C'){
                        sum += 90;
                        ++i;
                    }
                    else
                        sum += 10;
                    break;
                case 'L':
                    sum += 50;
                    break;
                case 'C':
                    if(i<length-1 && s[i+1]=='D'){
                        sum += 400;
                        ++i;
                    }
                    else if(i<length-1 && s[i+1]=='M'){
                        sum += 900;
                        ++i;
                    }
                    else
                        sum += 100;
                    break;
                case 'D':
                    sum += 500;
                    break;
                case 'M':
                    sum += 1000;
                    break;
            }
        }
        return sum;
    }
};
int main()
{
    string a("MCMXCIV");
    Solution sol;
    cout << sol.romanToInt(a) << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_39458342/article/details/86659445
今日推荐