罗马数字转整数

什么是罗马数字

罗马数字 共7种:
Ⅰ: 1 Ⅴ: 5 Ⅹ: 10 Ⅼ:50 C: 100 Ⅾ: 500 M: 1000
比如: 罗马数字2为 ⅠⅠ 12: XII
通常 大的在左边小的在右边
特例:如果小的数在左边 就用大的数减小的数4:IV 9:IX

特殊的几种情况:

1、I放在X5和L10的左边 表示4和9
2、X放在L50和C100的左边 表示40和90
3、C放在D500和M100的左边 表示900

示例

输入: S = ‘III’ 输出: 3
输入: S = ‘IV’ 输出: 4

思路:

利用map字典这个数据结构将罗马数字和对应的数字存储为键值对
遍历map result存储计算结果
如果s[i] 小于s[i+1] 说明符合特殊规则 result结果是s[i+1]减去s[i]
反之 result 加上对应数字

代码:

var romanToInt = function(s) {
     var map = {
        'I': 1,
        'V': 5,
        'X': 10,
        'L': 50,
        'C': 100,
        'D': 500,
        'M': 1000
     }
     let result = 0
     for(let i=0;i<s.length;i++){
        if(map[s[i]]<map[s[i+1]]){
            result -= map[s[i]]
        } else  result += map[s[i]]
     }
     return result
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值