思路:每一个罗马数字对应一个字母,再考虑特殊情况:若下个数比这个数大,则取负数。
public int romanToInt(String s) {
int len = s.length();
int result=0;
for(int i=0;i<len-1;i++){
int x=getvail(s.charAt(i));
if(x>=getvail(s.charAt(i+1))){
result=result+x;
}
else{
result=result-x;
}
}
result=result+getvail(s.charAt(len-1));
return result;
}
public int getvail(char s){
switch(s) {
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;
}
}
结果:4ms