13.罗马数字转整数

2019-05-14  本文已影响0人  JiangCheng97

罗马数字包含以下七种字符: IVXLCDM

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。


class Solution {
    public int romanToInt(String s) {
        Map<String,Integer> map = new HashMap<>();
        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 sum = 0;
        for(int i=0; i<s.length(); i++){
            
            if(s.length()>1){
                if(i<s.length()-1&&(map.get(String.valueOf(s.charAt(i)))<map.get(String.valueOf(s.charAt(i+1))))){
                    sum += map.get(String.valueOf(s.charAt(i+1)))-map.get(String.valueOf(s.charAt(i)));
                    i++;
                }else{
                    sum += map.get(String.valueOf(s.charAt(i)));
                }
            }else{
                return map.get(String.valueOf(s.charAt(i)));
            }
            
            
        }
        return sum;
    }
}
上一篇下一篇

猜你喜欢

热点阅读