[leetcode]: 13. Roman to Integer

来源:互联网 发布:音乐截取合并软件 编辑:程序博客网 时间:2024/05/16 15:51

1.题目描述

Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
罗马数字转10进制

2.分析

罗马字母包括:
I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)
规则:
小数出现在左边表示减法,例如IV=5-1=4
小数出现在右边表示加法,例如VIII=5+1+1+1=8

为每个字母建立字典,然后遍历字符串,判断做加法还是减法即可。

3.代码

c++

    int romanToInt(string s) {        if (s.size() == 0)//空字符串            return 0;        unordered_map<char, int> roma;        roma['I'] = 1;        roma['V'] = 5;        roma['X'] = 10;        roma['L'] = 50;        roma['C'] = 100;        roma['D'] = 500;        roma['M'] = 1000;        int sum = 0;        int i;        for (i = 0; i < s.size()-1; i++) {            if (roma[s[i]] < roma[s[i + 1]])//右边出现大数,说明要做减法                sum -= roma[s[i]];            else//右边出现小数,加法                sum += roma[s[i]];              }        sum += roma[s[i]];        return sum;    }
0 0
原创粉丝点击