罗马数字转整数

来源:互联网 发布:淘宝情侣装批发 编辑:程序博客网 时间:2024/04/26 00:23

描述:给定一个罗马数字,将其转换成整数。

返回的结果要求在1到3999的范围内。
思路:罗马数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000),当小的位于大的之前时,就是大的减去小的;当小的位于大的之后时,就是大的加上小的。根据这一规则,可以想到先转换第一个字母,然后默认加上第二个字母,如果第二个字母比第一个字母代表的整数大,就再减去2倍的第一个字母代表的整数。以此类推,就可得到整数。至于相应的字母对应的整数,可以用一个新函数来实现相应的功能。
代码:

class Solution {public:    /*     * @param s: Roman representation     * @return: an integer     */    int romanToInt(string s) {        // write your code here        int res = 0;        res += toInt(s[0]);        for(int j = 1; j < s.length(); j++){            res += toInt(s[j]);            if(toInt(s[j-1]) < toInt(s[j])){                res -= toInt(s[j-1]) * 2;            }        }        return res;    }      int toInt(char s){        switch(s){            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;        }    }};