美文网首页
13. 罗马数字转整数

13. 罗马数字转整数

作者: 雇个城管打天下 | 来源:发表于2018-04-26 08:55 被阅读17次

    思路

    比如IXX,使用临时变量temp保存上一个已经遍历的罗马数字,比如:遍历时是从后往前遍历的:1>  刚开始时,temp = 0; 遍历当前遍历到第一个X,则temp == 0 < 10 == X ,则res = 10;temp = 10;2> 继续向前遍历,又遇到X,此时temp == 10 = 10 == X,则 res = res + 10;即res = 20; temp = 10;3> 继续向前遍历,遇到I,此时temp == 10 > 1 == I; 则 res = res - 1; 即res = 19; temp = 1;循环终止;

    代码

    public int romanToInt(String s) {
            char[] cs = s.toCharArray();
            Map<Character, Integer> hm = new HashMap<>();
            hm.put('I', 1);
            hm.put('V', 5);
            hm.put('X', 10);
            hm.put('L', 50);
            hm.put('C', 100);
            hm.put('D', 500);
            hm.put('M', 1000);
            int res = 0;
            int temp = 0;     //临时变量
            int value = 0;      //当前罗马值的大小
            for (int i = cs.length - 1; i >= 0; i--) {
                value = hm.get(cs[i]);
                if (temp <= value) {
                    res += value;
                    temp = value;
                } else {
                    res -= value;
                    temp = value;
                }
            }
            return res;
        }
    

    相关文章

      网友评论

          本文标题:13. 罗马数字转整数

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