leetcode【数学】-----13. Roman to Integer(罗马转整数)

1、题目描述

2、分析

        输入一个字符串,这个字符串是一个罗马数字,将这个罗马数字转为阿拉伯数字。首先罗马数字的字符一共只有那么几个,每一个字符代表一个数字,这样的话就需要判断每一个字符,需要知道对于出现的每一个字符代表的数字是应该加还是减。可以根据罗马数字的规律,会发现,如果后面的字符代表的数字小于等于前面的数字的话应该是加。相反的话,则是减。这样的话,遍历每一个字符,然后计算则可得出结果。

3、代码

class Solution {
public:
    int romanToInt(string s) {
        int res=0;
        unordered_map<char,int> roman_int{{'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000}};
        for(int i=0;i<s.size();++i){
            int val=roman_int[s[i]];
            if(i==s.size()-1||roman_int[s[i+1]]<=roman_int[s[i]]) res+=val;
            else res-=val;
        }
        return res;
    }
};

4、相关知识点

        哈希表的使用。

posted @ 2019-05-11 21:00  吾之求索  阅读(116)  评论(0)    收藏  举报