public static int romanToInt(String s) {
// 定义罗马数字与整数的映射关系
Map<Character, Integer> romanMap = new HashMap<>();
romanMap.put('I', 1);
romanMap.put('V', 5);
romanMap.put('X', 10);
romanMap.put('L', 50);
romanMap.put('C', 100);
romanMap.put('D', 500);
romanMap.put('M', 1000);
// 最终的值
int a = 0;
// 循环处理每个字符
for (int i = 0; i < s.length(); i++) {
// 查找当前字符对应的值
char c = s.charAt(i);
Integer re = romanMap.get(c);
// 在判断字符的值时,需要判断后一个字符对应的值是否比当前值大,需要字符必须大于两个
if(i <= s.length()-2){
// 取后一位字符
char b = s.charAt(i+1);
Integer integer = romanMap.get(b);
// 当后一位的字符大于当前字符时,就表示当前是后一位字符对应的值减去当前字符对应的值
if(integer > re){
a = a + integer-re;
// 就相当于使用了后一位字符,所以这里需要将i+1,跳过一个字符
i++;
}else {
// 正常不变,进行加法
a = a + re;
}
}else {
// 正常不变,进行加法
a = a + re;
}
}
return a;
}
353

被折叠的 条评论
为什么被折叠?



