13. 罗马数字转整数

  1. 题目链接

  2. 解题思路:没啥可说的,按照要求一个个字符处理

  3. 代码

    class Solution {
    public:
        int romanToInt(string s) {
            int ans = 0;
            int len = s.length();
            map<char, int> table{
                {'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}
                };
            for (int i = 0; i < len; ++i) {
                if (s[i] == 'I') {
                    if (i + 1 < len) {
                        if (s[i + 1] == 'V') {
                            ans += 4;
                            i++;
                        } else if(s[i + 1] == 'X') {
                            ans += 9;
                            i++;
                        } else {
                            ans += 1;
                        }
                    } else {
                        ans += 1;
                    }
                } else if(s[i] == 'X') {
                    if (i + 1 < len) {
                        if (s[i + 1] == 'L') {
                            ans += 40;
                            i++;
                        } else if (s[i + 1] == 'C') {
                            ans += 90;
                            i++;
                        } else {
                            ans += 10;
                        }
                    } else {
                        ans += 10;
                    }
                } else if (s[i] == 'C') {
                    if (i + 1 < len) {
                        if (s[i + 1] == 'D') {
                            ans += 400;
                            i++;
                        } else if (s[i + 1] == 'M') {
                            ans += 900;
                            i++;
                        } else {
                            ans += 100;
                        }
                    } else {
                        ans += 100;
                    }
                } else {
                    ans += table[s[i]];
                }
            }
            return ans;
        }
    };
    
posted @ 2024-12-18 09:58  ouyangxx  阅读(10)  评论(0)    收藏  举报