问题描述:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
代码分析:罗马数字转换成整数的规则如下:如果前一个数的值小于后一个数的值,那么这个数为后者减去前者。如果前者大于后者,那么就是简单地相加即可。
代码如下:28ms
int getValue(char tmp){
switch(tmp){
case 'I':return 1;
case 'V':return 5;
case 'X':return 10;
case 'L':return 50;
case 'C':return 100;
case 'D':return 500;
case 'M':return 1000;
}
}
int romanToInt(char* s) {
int length = strlen(s);
int i;
int sum = 0;
int value1,value2;
for(i = 0;i<length;i++){
value1 = getValue(s[i]);
if(i!=length-1){
value2 = getValue(s[i+1]);
if(value1<value2){
sum+=value2-value1;
i++;
}else
sum+=value1;
}else
sum+=value1;
}
return sum;
}