leetcode12 整数转罗马数字

2020-01-09  本文已影响0人  justonemoretry

这个题,最开始的思路是用map去建立数字和罗马数字之间的映射,后面发现这样是无序的,没办法先用最大的除数去比较是否还大于最大除数,后面用数组来实现,最开始的方法是先用numbers中的数字倒序去减num,每减一次,拼接一次对应的罗马数字,这种数字比较的,用累减能实现的,都可以用除法去简化,用除法简化后如下:

class Solution {

    public String intToRoman(int num) {

        int[] numbers = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};

        String[] romans = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"};

        String res = "";

        int length = numbers.length;

        for (int i = length - 1; i >= 0; i--) {

            int s = num / numbers[i];

            while (s > 0) {

                res += romans[i];

                s--;         

            }

            num %= numbers[i];

        }

        return res;

    }

}

上一篇 下一篇

猜你喜欢

热点阅读