Leetcode#13: Roman to Integer

来源:互联网 发布:评论系统源码 编辑:程序博客网 时间:2024/06/08 15:39

题目描述:罗马数字转换成阿拉伯整数

思路:对于罗马数字与阿拉伯数字之间的关系,如下图所示:

这里写图片描述

罗马数字计数规则:

  • 相同的数字连写,所表示的数等于这些数字之和,例如:III = 3;
  • 小的数字在大的数字右边,所表示的数等于这些数字之和,相等情况也划为此类,例如:VI = 6;
  • 小的数字在大的数字左边,所表示的数=(右边的数-左边的数*2)+左边的数,例如:IV = 4;

若有需要,请访问我的Github获取完整C++源码。

class Solution{public:    //定义每一个罗马数字与阿拉伯数字之间的转换关系    int toNumber(char ch)        {            switch(ch)            {            case 'I':                return 1;            case 'V':                return 5;            case 'X':                return 10;            case 'L':                return 50;            case 'C':                return 100;            case 'D':                return 500;            case 'M':                return 1000;            }            return 0;        }    int romanToInt(string s)    {        //转换后结果存储在answer中        int answer = toNumber(s[0]);        for(int i = 1; i < s.length(); i++)        {            if(toNumber(s[i - 1]) < toNumber(s[i]))            {                answer += (toNumber(s[i]) - 2 * toNumber(s[i - 1]));            }            else            {                answer += toNumber(s[i]);            }        }        return answer;    }};
原创粉丝点击