[leetcode] 13. 罗马数字转整数

Posted ACBingo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode] 13. 罗马数字转整数相关的知识,希望对你有一定的参考价值。

13. 罗马数字转整数

字符串处理,完全是上一个题倒过来,同样从大到小干就可以了

class Solution {
public:
    int romanToInt(string s) {
        int ans = 0;
        int k = 0;

        while (k < s.size() && s[k] == ‘M‘) {
            ans += 1000;
            k++;
        }
        if (k < s.size() && s[k] == ‘C‘ && s[k + 1] == ‘M‘) {
            ans += 900;
            k += 2;
        }
        if (k < s.size() && s[k] == ‘C‘ && s[k + 1] == ‘D‘) {
            ans += 400;
            k += 2;
        }
        if (k < s.size() && s[k] == ‘D‘) {
            ans += 500;
            k++;
        }
        while (k < s.size() && s[k] == ‘C‘) {
            ans += 100;
            k++;
        }
        if (k < s.size() && s[k] == ‘X‘ && s[k + 1] == ‘C‘) {
            ans += 90;
            k += 2;
        }
        if (k < s.size() && s[k] == ‘X‘ && s[k + 1] == ‘L‘) {
            ans += 40;
            k += 2;
        }
        if (k < s.size() && s[k] == ‘L‘) {
            ans += 50;
            k++;
        }
        while (k < s.size() && s[k] == ‘X‘) {
            ans += 10;
            k++;
        }
        if (k < s.size() && s[k] == ‘I‘ && s[k + 1] == ‘X‘) {
            ans += 9;
            k += 2;
        }
        if (k < s.size() && s[k] == ‘I‘ && s[k + 1] == ‘V‘) {
            ans += 4;
            k += 2;
        }
        if (k < s.size() && s[k] == ‘V‘) {
            ans += 5;
            k++;
        }
        while (k < s.size() && s[k] == ‘I‘) {
            ans += 1;
            k++;
        }

        return ans;
    }
};

以上是关于[leetcode] 13. 罗马数字转整数的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 13 罗马数字转整数[找规律 多条件判断] HERODING的LeetCode之路

LeetCode刷题13-简单-罗马数字转整数

LeetCode刷题13-简单-罗马数字转整数

LeetCode 13. 罗马数字转整数 java 两种解法

LeetCode 13. 罗马数字转整数 java 两种解法

LeetCode13.罗马数字转整数(Python3)