12、Integer to Roman

解法一

/**
* @param {number} num
* @return {string}
*/
var intToRoman = function(num) {
    let roman='';
    if(Math.floor(num/1000) >=1 ){ // 比1000大
        for (let i=0;i<Math.floor(num/1000);i++){
            roman+='M';
        }
    }

    if(Math.floor((num%1000)/100)>=1){ // 小于1000
        if(Math.floor((num%1000)/100) === 4){
            roman+='CD';
        }else if(Math.floor((num%1000)/100) === 9) {
            roman+='CM';
        }else if(Math.floor((num%1000)/100) >= 5 && Math.floor((num%1000)/100) < 9){
            roman+='D';
            for(let i=0;i<Math.floor((num%1000)/100-5);i++){
              roman+='C';  
            }
        } else {
            for(let j=0;j<Math.floor((num%1000)/100);j++){
                roman+='C';
            }
        }        
    }

    if(Math.floor(((num%1000)%100)/10) >=1){ // 小于100
        if(Math.floor(((num%1000)%100)/10) === 4){
            roman+='XL';
        }else if(Math.floor(((num%1000)%100)/10) === 9){
            roman+='XC';
        }else if(Math.floor(((num%1000)%100)/10) >= 5 && Math.floor(((num%1000)%100)/10) < 9){
            roman+='L';    
            for(let i=0;i< Math.floor(((num%1000)%100)/10-5);i++){
              roman+='X';  
            }
        }else {
            for(let i=0;i<Math.floor(((num%1000)%100)/10);i++){
              roman+='X';  
            }
        }
    }

    if(Math.floor(((num%1000)%100)%10) >= 1){ //小于10   
        if(Math.floor(((num%1000)%100)%10) === 4){
            roman+='IV';
        }else if(Math.floor(((num%1000)%100)%10) === 9){
            roman+='IX';
        }else if(Math.floor(((num%1000)%100)%10) >= 5 && Math.floor(((num%1000)%100)%10) < 9){
            roman+='V';
            for(let i=0;i<Math.floor(((num%1000)%100)%10-5);i++){
              roman+='I';  
            }
        }else {
            for(let m=0;m<Math.floor(((num%1000)%100)%10);m++){
                roman+='I';
            }
        }

    }
    return roman;
};

思路:依次处理>1000,<1000,<100,<10的情况,在<1000,<100,<10的情况下分别处理 1=<x<=3 ,===4,5=<x<9, ===9 的情况~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值