Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
Subscribe to see which companies asked this question
C++代码:
int romanToInt(char* s) {
int sum = 0;
int i = 10000;
int tmp;
while (*s != '\0')
{
char str = *s;
switch (*s){
case 'I':
tmp = i;
i = 1;
sum += 1;
if (tmp<i)
sum -= tmp * 2;
break;
case 'V':
tmp = i;
i = 5;
sum += 5;
if (tmp<i)
sum -= tmp * 2;
break;
case 'X':
tmp = i;
i = 10;
sum += 10;
if (tmp<i)
sum -= tmp * 2;
break;
case 'L':
tmp = i;
i = 50;
sum += 50;
if (tmp<i)
sum -= tmp * 2;
break;
case 'C':
tmp = i;
i = 100;
sum += 100;
if (tmp<i)
sum -= tmp * 2;
break;
case 'D':
tmp = i;
i = 500;
sum += 500;
if (tmp<i)
sum -= tmp * 2;
break;
case 'M':
tmp = i;
i = 1000;
sum += 1000;
if (tmp<i)
sum -= tmp* 2;
break;
default:
break;
}
s++;
}
return sum;
}