从左至右依次计算
通过switch语句将当前的罗马字母转换为对应的整数并赋值给临时变量n
初始时m为零,随后m的值为上一个罗马数字对应的整数值
每次计算前,将n与m的值比较,如果n的值小于m,直接将当前结果加上m;如果n的值大于m,说明这一个罗马字母与上一个罗马字母为一组代表4、40一类的数,此时只需要将当前结果-2*m+n即可
//C语言
int romanToInt(char* s) {
int i, sum = 0, m = 0, n;
for(i = 0; s[i] != '\0'; i++)
{
switch(s[i])
{
case 'I': n = 1; break;
case 'V': n = 5; break;
case 'X': n = 10; break;
case 'L': n = 50; break;
case 'C': n = 100; break;
case 'D': n = 500; break;
case 'M': n = 1000;
}
if(n > m)
sum = sum - m * 2 + n;
else
sum += n;
m = n;
}
return sum;
}