什么是罗马数字
罗马数字 共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
};