当前位置:首页 > 编程笔记 > 正文
已解决

LeetCode【13】罗马数字转整数

来自网友在路上 11208120提问 提问时间:2023-11-19 19:32:26阅读次数: 120

最佳答案 问答题库1208位专家为你答疑解惑

题目:

在这里插入图片描述
思路:
第十二题的逆运算,方法同理。需要注意的是IV、IX、XL、XC、CD、CM这六种特殊的情况。正常情况下每个字符找到对应的数值累加,这六种特殊字符都是左边的数值比右边的数值小。

这里以IV举例,IV对应数字是1和5,1<5 ,组成的罗马字符左边比右边小。IV可以看作先减1再加5。循环每个字符,若当前字符比下个字符代表的数值小,就这么处理。

注意数组越界异常,最后一个字符一定是加法。因为 4 也是先减在加,加在后面

代码:


public static int romanToInt(String s) {Map<Character, Integer> map = new HashMap<>();map.put('M', 1000);map.put('D', 500);map.put('C', 100);map.put('L', 50);map.put('X', 10);map.put('V', 5);map.put('I', 1);int a = 0;for (int i = 0; i < s.length(); i++) {//比较当前字符 和 下一个字符 大小  例如:IV   1 < 5  要用减法//最后一个字符一定是加法,所以要加上  i < s.length() - 1if (i < s.length() - 1 && map.get(s.charAt(i)) < map.get(s.charAt(i + 1))) {a -= map.get(s.charAt(i));} else {a += map.get(s.charAt(i));}}return a;
}
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"LeetCode【13】罗马数字转整数":http://eshow365.cn/6-39568-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!