Roman to Integer

来源:互联网 发布:js锚点跳转 编辑:程序博客网 时间:2024/05/22 19:27

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

罗马数字转到十进制,首先得知道罗马数字的计数规则:

个位:I,II,III,IV,V,VI,VII,VIII,IX
十位:X,XX,XXX,XL,L,LX,LXX,LXXX,XC
百位:C,CC,CCC,CD,D,DC,DCC,DCCC,CM

XXIX:29     XXX:30    XCIII:93     XCV:95     CCC:300     CD:400
从右向左遍历字符串,如果s[i+1]代表的十进制值>s[i],则减去s[i],否则加上s[i]。

int romanToInt(string s){    int length = s.length();    if(length == 0)        return 0;    map<char,int> m;    m['I'] = 1;    m['V'] = 5;    m['X'] = 10;    m['L'] = 50;    m['C'] = 100;    m['D'] = 500;    m['M'] = 1000;    int i = length-1;    int sum = m[s[i--]];    while(i>=0)    {        if(m[s[i+1]] > m[s[i]])            sum -= m[s[i--]];        else            sum += m[s[i--]];    }    return sum;}


0 0