罗马数字转换器(FreeCodeCamp)

题目描述

image.png

测试实例

解题思路

  • 构造罗马数字和整数的基本元素对应哈希表
  • 将目标整数依次除以哈希表的每一个元素,并向下取整,如果取整后结果大于0,则拼接上述结果个数个罗马数字,然后对哈希表中的对应整数取余赋值给num
  • 如何构造这个哈希表是本题的关键难点。

解题代码

function convertToRoman(num) {
    const map = new Map([['M',1000],['CM',900],['D',500],['CD',400],['C',100],['XC',90],['L',50],['XL',40],['X',10],['IX',9],['V',5],['IV',4],['I',1]]);
    let result = '';
    for (let v of map) {
        const temp = parseInt(num/v[1],0);
        if (temp > 0) {
            for (let i = 0; i < temp; ++i) {
                result += v[0]
            }
        }
        num = num % v[1]
    }
    return result
}

convertToRoman(44);
复制代码

启示

  • 学会使用parseInt向下取整
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享