[LeetCode] 13. Roman to Integer java

来源:互联网 发布:手机怎么联系淘宝卖家 编辑:程序博客网 时间:2024/05/29 19:35
/**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;*/
//直接从后往前算,不用考虑那么多规则了,除了小在大前面要用大减小之外,其他就累加

0 0
原创粉丝点击