class Solution {
public int romanToInt(String s) {
String str = s;
int num = 0;
while (str.contains("IV")) {
int index = str.indexOf("IV");
try {
str = str.substring(0, index) + str.substring(index + 2 , str.length()) + str.charAt(str.length());
} catch (Exception e) {
str = str.substring(0, index);
}
num = num + 4;
}
while (str.contains("XL")) {
int index = str.indexOf("XL");
try {
str = str.substring(0, index) + str.substring(index + 2, str.length());
} catch (Exception e) {
str = str.substring(0, index);
}
num = num + 40;
}
while (str.contains("XC")) {
int index = str.indexOf("XC");
try {
str = str.substring(0, index) + str.substring(index + 2, str.length());
} catch (Exception e) {
str = str.substring(0, index);
}
num = num + 90;
}
while (str.contains("IX")) {
int index = str.indexOf("IX");
try {
str = str.substring(0, index) + str.substring(index + 2, str.length());
} catch (Exception e) {
str = str.substring(0, index);
}
num = num + 9;
}
while (str.contains("CD")) {
int index = str.indexOf("CD");
try {
str = str.substring(0, index) + str.substring(index + 2, str.length());
} catch (Exception e) {
str = str.substring(0, index);
}
num = num + 400;
}
while (str.contains("CM")) {
int index = str.indexOf("CM");
try {
str = str.substring(0, index) + str.substring(index + 2, str.length());
} catch (Exception e) {
str = str.substring(0, index);
}
num = num + 900;
}
for(int i = 0; i < str.length(); i ++) {
switch (str.charAt(i)) {
case 'I':
num = num + 1;
break;
case 'V':
num = num + 5;
break;
case 'X':
num = num + 10;
break;
case 'L':
num = num + 50;
break;
case 'C':
num = num + 100;
break;
case 'D':
num = num + 500;
break;
case 'M':
num = num + 1000;
break;
default:
throw new IllegalArgumentException("Unexpected value: " + str.charAt(i));
}
}
return num;
}
}
来源:CSDN
作者:码千行
链接:https://blog.csdn.net/weixin_45856392/article/details/103245928