作者:沙尘jr暴的天下 | 来源:互联网 | 2023-10-14 16:05
特殊规则只有六种情况,只要直接把情况都列举出来即可。
只有I X C才会和右边组合,每次遇到这三个,直接检查右边就好了
public int romanToInt(String s) {
int result = 0;
for(int i=0,len = s.length();i){
//只有I X C需要看右边而已
if(s.charAt(i)==‘I‘){
if(i==len-1){
result+=1;
}else{
if(s.charAt(i+1)==‘V‘){
result+=4;
i++;
}else if(s.charAt(i+1)==‘X‘){
result+=9;
i++;
}else{
result+=1;
}
}
}
else if(s.charAt(i)==‘X‘){
if(i==len-1){
result+=10;
}else{
if(s.charAt(i+1)==‘L‘){
result+=40;
i++;
}else if(s.charAt(i+1)==‘C‘){
result+=90;
i++;
}else{
result+=10;
}
}
}
else if(s.charAt(i)==‘C‘){
if(i==len-1){
result+=100;
}else{
if(s.charAt(i+1)==‘D‘){
result+=400;
i++;
}else if(s.charAt(i+1)==‘M‘){
result+=900;
i++;
}else{
result+=100;
}
}
}
else{
char temp = s.charAt(i);
switch (temp){
case ‘V‘:result+=5;break;
case ‘L‘:result+=50;break;
case ‘D‘:result+=500;break;
case ‘M‘:result+=1000;break;
}
}
}
return result;
}
有点慢,但是这样写法最清晰。
LeetCode13-罗马数字转整数(水题)