13. Roman to Integer

2018-12-06  本文已影响0人  苏州城外无故人
题目
测试用例

思路:左边的数字小于右边的数字,就加上左边的数字,反之就减去右边的数字,注意边界值。



    public static  int romantOInt(String s) {
        if (null == s || s.length() == 0){
            return -1;
        }
        Map<Character, Integer> romanMap = new HashMap<>();
        romanMap.put('I', 1);
        romanMap.put('V', 5);
        romanMap.put('X', 10);
        romanMap.put('L', 50);
        romanMap.put('C', 100);
        romanMap.put('D', 500);
        romanMap.put('M', 1000);

        int len = s.length();
        int sum = 0;
        for (int i = 0; i < s.length() - 1; i ++) {
            if (romanMap.get(s.charAt(i)) < romanMap.get(s.charAt(i+1))) {
                sum = sum - romanMap.get(s.charAt(i));
            } else {
                sum = sum + romanMap.get(s.charAt(i+1));
            }
        }
        return sum + romanMap.get(s.charAt(len - 1));
    }


上一篇 下一篇

猜你喜欢

热点阅读