romanToInt

/*

(有缺陷 最好是从后往前)

建立一个map储存映射关系 可以用swith;

思路是 从前到后遍历 前面的数大于后面的数 吧前面的数加到结果里,反之相减加入结果;

*/



class Solution {

    public int romanToInt(String s) {

        if(s == null || s.length() == 0) {

            return 0;

        }

        Map rmi = new HashMap();

        rmi.put('M', 1000);

        rmi.put('D', 500);

        rmi.put('C', 100);

        rmi.put('L', 50);

        rmi.put('X', 10);

        rmi.put('V', 5);

        rmi.put('I', 1);

        int result = 0;

        int[] nums = new int[20];

        for(int i = 0; i < s.length(); i++) {

            nums[i] = (int)rmi.get(s.charAt(i));

        }

        for(int i = 0, j = 1; i < nums.length - 1; ) {

            if(nums[i] - nums[j] >= 0) {

                result += nums[i];

                i++;

                j++;

            }else {

                result += nums[j] - nums[i];

                i = i + 2;

                j = j + 2;

            }

        }

        return result;

    }

}

你可能感兴趣的:(romanToInt)