天天看點

羅馬數字轉換器(FreeCodeCamp)

題目描述

羅馬數字轉換器(FreeCodeCamp)

測試執行個體

羅馬數字轉換器(FreeCodeCamp)

解題思路

  • 構造羅馬數字和整數的基本元素對應哈希表
  • 将目标整數依次除以哈希表的每一個元素,并向下取整,如果取整後結果大于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向下取整

繼續閱讀