LeetCode之罗马数字转整数

我的想法就是扫一遍整个字符串,看对应的字符是什么数字,除开题目要求特殊的特判一下就好了。

我一开始没有预存数组,直接用的if else ,代码比较冗余。

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

猜你喜欢

转载自blog.csdn.net/wuhenglan/article/details/88312122