13.罗马数字转整数

题目


示例:

解题思路


  • 利用哈希表:
class Solution {
public:
    int romanToInt(string s) {
        int ans=0;
        unordered_map<char, int> m = {//预存一个哈希表
            {'I', 1},
            {'V', 5},
            {'X', 10},
            {'L', 50},
            {'C', 100},
            {'D', 500},
            {'M', 1000}
        };
        int length=s.size();
        for(int i=0;i<length;i++)
        {
            if(i<length-1&&m[s[i]]<m[s[i+1]])ans-=m[s[i]];//如果出现后面的数字比前面的大的情况,前面的作减法
            else ans+=m[s[i]];//否则直接加就好
        }
        return ans;
    }
};
posted @ 2022-03-30 11:38  vhuivwet  阅读(17)  评论(0编辑  收藏  举报