题目
这道题是相对比较简单的一道题,转换规则十分清晰,唯一的难点就是就是几种特殊情况的处理
话不多说,直接上代码:
class Solution {
public int romanToInt(String s) {
int res=0;
int i=0;
int length=s.length();
char pre=' ';
// pre用于记录第i-1个字符,用于处理特殊情况
while(i<length){
switch (s.charAt(i)){
case 'I': res+=1;break;
case 'V': if(pre=='I') res+=3;else res+=5;break;
//这里 res+=3是因为判别出"IV",需要将之前加的'I'减去,再加上"IV"应有的值,下面同理
case 'X': if(pre=='I') res+=8;else res+=10;break;
case 'L': if(pre=='X') res+=30;else res+=50;break;
case 'C': if(pre=='X') res+=80;else res+=100;break;
case 'D': if(pre=='C') res+=300;else res+=500;break;
case 'M': if(pre=='C') res+=800;else res+=1000;break;
default:break;
}
pre=s.charAt(i++);
}
return res;
}
}
运行结果如下:
如果对这道题有什么疑问的话,可以评论留言,我都会及时回复的