LeetCode 13罗马数字转整数

Posted Visitor

tags:

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

题目链接

【题解】


就是上一题反过来的过程。
因为有说一般情况下后面的罗马数字是小于前面的罗马数字的。
如果前面的罗马数字小于后面的罗马数字了。
说明出现了4,9,40,90这些特殊情况。
那么就得判断一下下了。
直接用map<string,int>把所有的罗马数字对应的数字都放进去。
然后就很好做啦。
写的时候遇到一个问题。
就是string temp = 一个char类型+另外一个char类型变量。
会出错。。。
得这么写
string temp="";
temp+=charA;
temp+=charB;

【代码】

class Solution {
public:
    int romanToInt(string s) {
        map<string,int> dic;
        dic.clear();
        int nums[]={1,4,5,9,10,40,50,90,100,400,500,900,1000};
        string roma[]={"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
        for (int i = 0;i < 13;i++) dic[roma[i]] = nums[i];
        int len = s.size();
        int ans = 0;
        for (int i = 0;i < len;i++){
            string chara = "";string charb = "";
            chara+=s[i];
            if (i<len-1) charb +=s[i+1];
            if (i<len-1 && dic[chara]<dic[charb]){
                string temp = "";
                temp+=chara;temp+=charb;
                ans = ans + dic[temp];
                i++;
            }else ans+=dic[chara];
        }
        return ans;
    }
};

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

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

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

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

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

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

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