题目考察的知识点

考察哈希表的应用

题目解答方法的文字分析

将对应关系存入哈希表中之后开始循环拆分每一个罗马字母,将结果保存并减去哈希表中对应的值。最后的结果和limit比较,看是否需要翻转。

本题解析所用的编程语言

使用Java解答

完整且正确的编程代码

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param num int整型
     * @param limit int整型
     * @return string字符串
     */


    public String integerToRomanWithReverse(int num, int limit) {
        LinkedHashMap<Integer, String> mp = new LinkedHashMap<>();
        mp.put(1000, "M");
        mp.put(900, "CM");
        mp.put(500, "D");
        mp.put(400, "CD");
        mp.put(100, "C");
        mp.put(90, "XC");
        mp.put(50, "L");
        mp.put(40, "XL");
        mp.put(10, "X");
        mp.put(9, "IX");
        mp.put(5, "V");
        mp.put(4, "IV");
        mp.put(1, "I");
        StringBuilder res = new StringBuilder();
        for (Integer val : mp.keySet()) {
            String s = mp.get(val);
            while (num >= val) {
                num -= val;
                res.append(s);
            }
        }
        if (res.length() >= limit) {
            res.reverse();
        }
        return res.toString();
    }
}