首先理解罗马数字https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97
罗马数字共有7个,即Ⅰ(1)、Ⅴ(5)、Ⅹ(10)、Ⅼ(50)、Ⅽ(100)、Ⅾ(500)和Ⅿ(1000)。
MCDXXXVII 1437
int romanToInt(char* s)
{
int rc = 0;
int val = 0;
int prevVal = 0;
char* cur = s + strlen(s);
while(cur != (s - 1))
{
switch(*cur)
{
case 'I':
val = 1;
break;
case 'V':
val = 5;
break;
case 'X':
val = 10;
break;
case 'L':
val = 50;
break;
case 'C':
val = 100;
break;
case 'D':
val = 500;
break;
case 'M':
val = 1000;
break;
default:
val = 0;
break;
}
if (val < prevVal)
{
rc -= val;
}
else
{
rc += val;
}
prevVal = (val < prevVal) ? prevVal : val;
cur--;
}
return rc;
}
网友评论