int Call(char c){
switch(c){
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;
}
return 0;
}
int romanToInt(char * s){
int l=strlen(s),ret=0;
for(int i=0;i<l;i++){
ret+=Call(s[i]);
if(i+1<l && Call(s[i])%3==1 && Call(s[i])<Call(s[i+1]) && (Call(s[i+1])/Call(s[i]))<=10)
ret+=Call(s[i+1])-2*Call(s[i++]);
}
return ret;
}
执行用时: 4 ms
内存消耗: 5.7 MB