问题简介
编程思路
-
把映射关系使用Map保存起来。
-
Map<Integer, String> transfer = new HashMap<>(); transfer.put(1, "I"); transfer.put(4, "IV"); transfer.put(5, "V"); transfer.put(9, "IX"); transfer.put(10, "X"); transfer.put(40, "XL"); transfer.put(50, "L"); transfer.put(90, "XC"); transfer.put(100, "C"); transfer.put(400, "CD"); transfer.put(500, "D"); transfer.put(900, "CM"); transfer.put(1000, "M");
-
把比较大小的排列次数有序记录起来
-
递减比较待测试数据和罗马数字中的数字。
程序实现
第一个版本AC
一步到位,我是没有想到的,真的比较开心。
public String intToRoman(int num) {
Map<Integer, String> transfer = new HashMap<>();
transfer.put(1, "I");
transfer.put(4, "IV");
transfer.put(5, "V");
transfer.put(9, "IX");
transfer.put(10, "X");
transfer.put(40, "XL");
transfer.put(50, "L");
transfer.put(90, "XC");
transfer.put(100, "C");
transfer.put(400, "CD");
transfer.put(500, "D");
transfer.put(900, "CM");
transfer.put(1000, "M");
StringBuilder builder = new StringBuilder();
List<Integer> factor = new ArrayList<>(Arrays.asList(1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1));
int i = 0;
while (num > 0) {
if (num < factor.get(i)) {
i++;
continue;
}
builder.append(transfer.get(factor.get(i)));
num = num - factor.get(i);
}
return builder.toString();
}
总结
今天也是比较忙碌的一天,因为父母生气,今天家里也充斥着不满的气氛。我很难过,自己不能为我爸缓解内心的焦虑,也不能让他宽心气顺,想想自己也是挺差劲的。
晚上再为这个题目编程的时候,本来以为还不好编写,结果没有想到,比较刘畅的就完成了编码,而且一口气就通过了。很开心。这个题目还是比较简单的。并不复杂。
初七了,我希望啊,新的一年我能够认真的自律,认真的过自己想要的生活,不被欲望打破,清心清净,抓紧时间做重要的事情。因为之前自己真的浪费了太多的时间了,而且一步错步步错,每次感觉都被时间推着往前走,很尴尬。我希望截止到5月份,为了实现清净心和自我约束,和增强对于欲望的抵抗能力,通过把宿舍的插排带回,正念练习、觉悟的阅读提升自己的警惕性,完成高质量的持戒生活。省的又被心里想要放松的念头,最终演化成放纵的念头给一波带走了。时间真的太宝贵了。一刻也不能浪费。