力扣个人解题分享(13题): 罗马数字转整数

var romanToInt = function(s) {
    let sum = 0;//结果整数
    let ex_obj = { //例外的罗马数字组合,对应的阿拉伯数字
        "IV": 4,
        "IX": 9,
        "XL": 40,
        "XC": 90,
        "CD": 400,
        "CM": 900,
    }
    let val_obj = {//罗马数字单字符,对应的阿拉伯数字
        "I": 1,
        "V": 5,
        "X": 10,
        "L": 50,
        "C": 100,
        "D": 500,
        "M": 1000
    }
    s.replace(/IV|IX|XL|XC|CD|CM/g,(m)=>{ 
        //先计算例外的罗马数字组合,再在字符串里抹除
        sum += ex_obj[m]
        return ""
    }).replace(/I|V|X|L|C|D|M/g,(m)=>{
        //接力,剩下的都不是例外,直接按顺序计算罗马数字
        sum += val_obj[m]
    })
    return sum;
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值