美文网首页
romanToInt

romanToInt

作者: 走地牙 | 来源:发表于2018-07-08 03:54 被阅读0次

    /*

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

    建立一个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

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