题目描述
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
示例
输入: "III"
输出: 3
输入: "IV"
输出: 4
输入: "IX"
输出: 9
输入: "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
输入: "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
代码
public int romanToInt(String s) {
Map<String, Integer> symbos = new HashMap<>();
symbos.put("M", 1000);
symbos.put("CM", 900);
symbos.put("D", 500);
symbos.put("CD", 400);
symbos.put("C", 100);
symbos.put("XC", 90);
symbos.put("L", 50);
symbos.put("XL", 40);
symbos.put("X", 10);
symbos.put("IX", 9);
symbos.put("V", 5);
symbos.put("IV", 4);
symbos.put("I", 1);
int result = 0;
for (int i = 0; i < s.length(); i++) {
String oneStr = String.valueOf(s.charAt(i));
String twoStr = "";
if ( i + 1 < s.length()) {
twoStr = s.substring(i, i + 1 + 1);
}
if (symbos.containsKey(twoStr)) {
result = result + symbos.get(twoStr);
i = i + 1;
} else {
result = result + symbos.get(oneStr);
}
}
return result;
}
网友评论