首页 > 编程 > Java > 正文

[LeetCode] 13. Roman to Integer java

2019-11-06 06:19:09
字体:
来源:转载
供稿:网友
/**13. Roman to Integer * @param s * @returnint */ public int romanToInt(String s) { if (s == null || s.length() == 0) return 0; Map<Character , Integer> map = new HashMap<Character, Integer>(); 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); int ret = map.get(s.charAt(0)); for (int i=1, len=s.length(); i<len; i++) { int cur = map.get(s.charAt(i)); int PRe = map.get(s.charAt(i-1)); if (cur <= pre) { ret += cur; } else { ret += cur-2*pre; } } return ret; }

//注意,计算方法 /*1. 若干相同数字连写表示的数是这些罗马数字的和,如 III=3; 2. 小数字在大数字前面表示的数是用大数字减去小数字,如 IV=4; 3. 小数字在大数字后面表示的数是用大数字加上小数字,如 VI=6;*/ //直接从后往前算,不用考虑那么多规则了,除了小在大前面要用大减小之外,其他就累加


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表