题目

分析

只需要注意减情况的判断

代码实现

public static int romanToInt(String s) {
        HashMap<Character, Integer> map = init();
        char[] chas=s.toCharArray();
        int res=0;
        for(int i=0;i<chas.length;i++)
        {
            if(i!=0&&(    (chas[i-1]=='I'&&(chas[i]=='V'||chas[i]=='X'))
                    ||
                           (chas[i-1]=='X'&&(chas[i]=='L'||chas[i]=='C'))
                    ||
                    (chas[i-1]=='C'&&(chas[i]=='D'||chas[i]=='M'))))
            {
                res-=map.get(chas[i-1]);
                res+=(map.get(chas[i])-map.get(chas[i-1]));
            }
            else
            {
                res+=map.get(chas[i]);
            }
        }
        return res;
    }

    public static HashMap<Character,Integer> init()
    {
        HashMap<Character,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);
        return map;
    }

学习情况

1次