可以直接用case去判断或先赋值再比较。估计直接用case包含6种特殊情况的效率更高。
int charToInt(char ch){
switch(ch){
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;
default: return 0;
}
}
int romanToInt(char * s){
if(s == NULL)return 0;
int index = 0;
int result = 0;
while(s[index]!='\0'){
if(charToInt(s[index]) < charToInt(s[index+1])){
result += charToInt(s[index+1]) - charToInt(s[index]);
index++;
}else{
result += charToInt(s[index]) ;
}
index++;
}
return result;
}