您的位置:首页 > 其它

Leetcode Q13: Roman to Integer

2015-07-31 14:00 375 查看
题目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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 字符串 int