leetcode [Roman to Integer]

罗马数字的构造规则

    public class Solution {  
        public int romanToInt(String s){  
            int res = 0;  
            int i = 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);  
            for(i = 0; i < s.length() - 1; i++){//循环外还要有一个  
                if(map.get(s.charAt(i)) < map.get(s.charAt(i + 1))){  
                    res += map.get(s.charAt(i + 1)) - map.get(s.charAt(i));  
                    i++;//处理了两位i就要自增  
                }  
                else{  
                    res += map.get(s.charAt(i));  
                }  
            }  
            if(i != s.length()){//防止之前已处理过最后一位  
                res += map.get(s.charAt(s.length() - 1));  
            }  
            return res;  
        }  
    }  

 

posted @ 2017-12-03 13:59  melon1ce  阅读(72)  评论(0)    收藏  举报