Convert Number Into Roman Numeral

Convert the given number into a roman numeral


JavaScript impl (with comment):


/*
   param: num 
       just give a number between 1 ~ 3999
*/
function convertToRoman(num) {
  // parse int number to a string
  var numStr = num+"";
  // construct roman numeral map
  var roman = {
    1:"I",
    5:"V",
    10:"X",
    50:"L",
    100:"C",
    500:"D",
    1000:"M"
  };
  /*
  iterate the given string from the end to start,
  loop once that variable bit will times 10,
  this will select the corresponse value in object roman
  */
  for(var i=numStr.length-1,bit = 1,res =[];i>=0;i--,bit*=10){
    var ch = numStr.charAt(i);
    var element = convertToRomanNumWithBit(roman,ch,bit);
    res.push(element);
  }
  /*
  since iterate the given number from the end to start just now,
  so reverse the array makes the order of number correct ,
  and  return a new string that store the roman numeral
  */
  num = res.reverse().join('');
  return num;
}
/*
    param : romanNumTable ,
            ch  -- the 1-digit number or string ,
            bit -- the bit of ch ,
            demo: 2567
                  ch = 5, bit = 100
*/
function convertToRomanNumWithBit(romanNumTable,ch,bit){
       var str="";
       if(ch<4)
          str = romanNumTable[1*bit].repeat(parseInt(ch));
       else if(ch == 5)
         str = romanNumTable[5*bit];
       else if(ch == 4)
         str = romanNumTable[1*bit].concat(romanNumTable[5*bit]);
       else if(ch == 9)
         str = romanNumTable[1*bit].concat(romanNumTable[1*bit*10]);
       else
         str = romanNumTable[5*bit].concat(romanNumTable[1*bit].repeat(parseInt(ch)-5));
       return str;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值