Leetcode Q13: Roman to Integer

来源:互联网 发布:泰捷webox网络机顶盒 编辑:程序博客网 时间:2024/06/10 08:11

题目13:

Given a roman numeral, convert it to an integer.

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

int StrLen(char* s){    int l = 0;    while (*s++ != 0)    {        l++;    }    return l;}int romanToInt(char* s) {    int res = 0;    int i = 3;    char left = 0;    char mid = 0;    char right = 0;    int mul = 0;    int len = StrLen(s);    /* 千位 */    if (*s == 'M')    {        while (*s == 'M')        {            res += 1000;            s++;        }    }    /* 查找百位、十位和个位 */    while (i)    {        switch (i)        {        case 3:            left = 'C';            mid = 'D';            right = 'M';            mul = 100;            break;        case 2:            left = 'X';            mid = 'L';            right = 'C';            mul = 10;            break;        case 1:            left = 'I';            mid = 'V';            right = 'X';            mul = 1;            break;        default:            break;        }        if (*s == left)        {            if (*(s+1) == mid)            {                /* 4 */                res += 4 * mul;                s += 2;            }            else            {                if (*(s+1) == right)                {                    /* 9 */                    res += 9 * mul;                    s += 2;                }                else                {                    /* 1、2、3 */                    res += mul;                    s++;                    while (*s == left)                    {                        res += mul;                        s++;                    }                }            }        }        else        {            if (*s == mid)            {                /* 5 */                res += 5 * mul;                s++;                /* 6、7、8*/                while (*(s) == left)                {                    res += mul;                    s++;                }            }        }        i--;    }    return res;}


0 0
原创粉丝点击