小哆啦解题记:整数转罗马数字
小哆啦解题记:整数转罗马数字
小哆啦开始力扣每日一题的第十四天
https://leetcode.cn/problems/integer-to-roman/submissions/595220508/
第一章:神秘的任务
一天,哆啦A梦接到了一项任务——将一个整数转换为罗马数字。他心想:“这不就是数字嘛,应该不难!”于是,他兴奋地跑去找小智,请他一起解决这个问题。
“小智,看看这个任务!”哆啦A梦得意地递上任务清单。
小智一看,露出一个“数学怪”式的笑容:“哦,罗马数字啊,这可是一道有趣的题目。我们从最基础的工具开始吧!”
第二章:用 switch
解锁数字
小智从兜里拿出一个工具,笑着说:“这是‘switch’,在一些简单的情况下,它能快速解决问题。我们先用它试试看。”
哆啦A梦好奇地看着,“那我们怎么开始?”
小智示范道:“假设我们有个数字 9,switch
能帮助我们通过多个条件来转换它。”接着,小智展示了代码:
function intToRomanSwitch(num: number): string {let result = '';switch (true) {case num >= 1000:result += 'M'.repeat(Math.floor(num / 1000));num %= 1000;case num >= 900:result += 'CM';num -= 900;case num >= 500:result += 'D';num -= 500;case num >= 400:result += 'CD';num -= 400;case num >= 100:result += 'C'.repeat(Math.floor(num / 100));num %= 100;case num >= 90:result += 'XC';num -= 90;case num >= 50:result += 'L';num -= 50;case num >= 40:result += 'XL';num -= 40;case num >= 10:result += 'X'.repeat(Math.floor(num / 10));num %= 10;case num >= 9:result += 'IX';num -= 9;case num >= 5:result += 'V';num -= 5;case num >= 4:result += 'IV';num -= 4;case num >= 1:result += 'I'.repeat(num);num -= num;}return result;
}console.log(intToRomanSwitch(58)); // LVIII
哆啦A梦看了看:“嗯,switch
处理得不错,但它有点冗长,而且每次都需要写很多条件判断,感觉有些麻烦。”
小智点了点头:“你说得对,switch
在一些简单情况中可以工作,但如果要处理更大的数字,代码会变得越来越复杂,且不容易维护。”
第三章:用 map
提升效率
“那我们该怎么办?”哆啦A梦有些疑惑。
小智微笑着说:“别急,接下来我将给你展示一个更灵活的工具——map
。”
哆啦A梦眼睛一亮:“map
?它是做什么的?”
小智解释道:“map
可以存储数字和它们对应的罗马数字,我们可以通过查找数字来获取罗马数字,避免了重复的条件判断。”
接着,小智展示了如何使用 map
来简化代码:
function intToRoman(num: number): string {const romanMap: Map<number, string> = new Map([[1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'],[100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'],[10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I']]);let result = '';for (const [value, symbol] of romanMap) {while (num >= value) {result += symbol;num -= value;}}return result;
}console.log(intToRoman(58)); // LVIII
哆啦A梦眼睛一亮:“哇,这个map
真是太棒了!只需要查找一下就能得到结果,而且代码也简洁得多。”
小智点了点头:“没错!map
让我们可以轻松地管理数字和罗马数字的关系,代码更加清晰,扩展性也更强。”
第四章:成功的冒险
通过 map
,哆啦A梦不仅顺利完成了任务,还学到了如何用合适的工具来解决问题。
哆啦A梦开心地说:“原来,map
真的比 switch
更适合这种任务!它帮助我避免了重复的条件判断,效率也更高。”
小智笑着拍了拍哆啦A梦的背:“你学得很快!选择合适的工具,就能让问题变得简单。记住,不同的问题有不同的解法,找到最合适的才是王道!”