题目: 罗马数字转整数,3999以内。

题解: 特殊处理一下 "I" "X" "C"就好,其他直接加上去就行了

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