题解 | #牛牛和罗马数字智力游戏#
牛牛和罗马数字智力游戏
https://www.nowcoder.com/practice/7f4bd3b2d7d34f5c87d84120d9782c1d
题目考察的知识点
考察哈希表的应用
题目解答方法的文字分析
将对应关系存入哈希表中之后开始循环拆分每一个罗马字母,将结果保存并减去哈希表中对应的值。最后的结果和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();
}
}
