代码
public static int romanToInt(String s) {
// 创建一个HashMap,将罗马数字字符映射为整数值
HashMap<Character, Integer> map = new HashMap<>();
map.put('I', 1);
map.put('V', 5);
map.put('X', 10);
map.put('L', 50);
map.put('C', 100);
map.put('D', 500);
map.put('M', 1000);
// 初始化总和为0
int sum = 0;
// 遍历输入的罗马数字字符串
for (int i = 0; i < s.length(); i++) {
// 获取当前字符对应的整数值
Integer value = map.get(s.charAt(i));
// 如果当前字符不是最后一个字符,且当前字符的值小于下一个字符的值
if (i < s.length() - 1 && value < map.get(s.charAt(i + 1))) {
// 减去当前字符的值
sum -= value;
} else {
// 否则,加上当前字符的值
sum += value;
}
}
// 返回最终的整数值
return sum;
}
leetcode测试
![](https://i-blog.csdnimg.cn/blog_migrate/9cb2e5190482504129bba4b8f1ab68e1.png)