罗马数字转整数
- 标签(题目类型):字符串处理、数学计算
题目描述
给定一个罗马数字字符串,将其转换成整数。输入确保在 1 到 3999 的范围内。
罗马数字由以下七个符号表示:I, V, X, L, C, D 和 M。这些符号对应的值分别是 1, 5, 10, 50, 100, 500 和 1000。例如,罗马数字 III 表示 3,IV 表示 4,IX 表示 9,LVIII 表示 58,如此类推。
注意,罗马数字的书写规则遵循从左到右的减法原则,例如 IV 表示 4,IX 表示 9,即从较大的数字中减去较小的数字来表示相应的数。但是也有特殊情况,例如 IV = V - I = 5 - 1 = 4,IX = X - I = 10 - 1 = 9,XL = L - X = 50 - 10 = 40,XC = C - X = 100 - 10 = 90,CD = D - C = 500 - 100 = 400,CM = M - C = 1000 - 100 = 900。
为了简化问题,我们只需要考虑这些基本的减法情况。
思路及实现
方式一:直接映射法
思路
- 创建一个映射表,将罗马数字的每个字符映射到其对应的整数值。
- 遍历输入的罗马数字字符串,对每个字符进行查找和转换。
- 对于特殊的减法情况,例如 IV, IX, XL, XC, CD, CM,需要进行额外的判断和处理。
Java版本
public class RomanToInt {
public int romanToInt(String s) {
Map<Character, Integer> romanValues = new HashMap<>();
romanValues.put('I', 1);
romanValues.put('V', 5);
romanValues.put('X', 10);
romanValues.put('L', 50);
romanValues.put('