如题
就是一个逐字符匹配了
public static int romanToInt(String s) {
int num = 0;
int i=0;
while(i<s.length()) {
char ch = s.charAt(i);
switch (ch) {
case ('M'):
num += 1000;
break;
case ('D'):
num += 500;
break;
case ('C'):
if (i != s.length()-1 && s.charAt(i + 1) == 'D') {
num += 400;
i++;
} else if (i != s.length()-1 && s.charAt(i + 1) == 'M') {
num += 900;
i++;
} else {
num += 100;
}
break;
case ('L'):
num += 50;
break;
case ('X'):
if (i != s.length()-1 && s.charAt(i + 1) == 'L') {
num += 40;
i++;
} else if (i != s.length()-1 && s.charAt(i + 1) == 'C') {
num += 90;
i++;
} else {
num += 10;
}
break;
case ('V'):
num += 5;
break;
case ('I'):
if (i != s.length()-1 && s.charAt(i+1) == 'V') {
num += 4;
i++;
} else if (i != s.length()-1 && s.charAt(i + 1) == 'X') {
num += 9;
i++;
} else {
num++;
}
break;
}
i++;
}
return num;
}
很直观