美文网首页
leetcode题目13: 罗马数字转整数(java)

leetcode题目13: 罗马数字转整数(java)

作者: castlet | 来源:发表于2020-05-25 22:20 被阅读0次

    题目描述

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

    示例

    输入: "III"
    输出: 3
    
    输入: "IV"
    输出: 4
    
    输入: "IX"
    输出: 9
    
    输入: "LVIII"
    输出: 58
    解释: L = 50, V= 5, III = 3.
    
    输入: "MCMXCIV"
    输出: 1994
    解释: M = 1000, CM = 900, XC = 90, IV = 4.
    

    代码

    public int romanToInt(String s) {
        Map<String, Integer> symbos = new HashMap<>();
        symbos.put("M", 1000);
        symbos.put("CM", 900);
        symbos.put("D", 500);
        symbos.put("CD", 400);
        symbos.put("C", 100);
        symbos.put("XC", 90);
        symbos.put("L", 50);
        symbos.put("XL", 40);
        symbos.put("X", 10);
        symbos.put("IX", 9);
        symbos.put("V", 5);
        symbos.put("IV", 4);
        symbos.put("I", 1);
    
        int result = 0;
        for (int i = 0; i < s.length(); i++) {
            String oneStr = String.valueOf(s.charAt(i));
            String twoStr = "";
            if ( i + 1 < s.length()) {
                 twoStr = s.substring(i, i + 1 + 1);
            }
    
            if (symbos.containsKey(twoStr)) {
                result = result + symbos.get(twoStr);
                i = i + 1;
            } else {
                result = result + symbos.get(oneStr);
            }
        }
        return result;
    }
    

    相关文章

      网友评论

          本文标题:leetcode题目13: 罗马数字转整数(java)

          本文链接:https://www.haomeiwen.com/subject/kuxpahtx.html