int romanToInt(char * s){
// int a[13] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 };
int i = 0, k, sum = 0;
while (s[i]) {
switch (s[i]) {
case 'I': if (s[i+1] == 'V') {
k = 4;
i++;
}
else if (s[i+1] == 'X') {
k = 9;
i++;
}
else
k = 1;
break;
case 'V': k = 5; break;
case 'X': if (s[i+1] =='L') {
k = 40;
i++;
}
else if (s[i+1] == 'C') {
k = 90;
i++;
}
else
k = 10; break;
case 'L': k = 50; break;
case 'C': if (s[i+1] == 'D') {
k = 400;
i++;
}
else if (s[i+1] == 'M') {
k = 900;
i++;
}
else
k = 100; break;
case 'D': k = 500; break;
case 'M': k = 1000; break;
}
sum += k;
i++;
}
return sum;
}
/* !< output */
输入
"III"
"MCMXCIV"
输出
3
1994
预期结果
3
1994