解题思路
- 创建一个 map 作为映射数据
- 遍历传递的罗马数字,每次判断一下当前值 与 后一个值做比较
- 如果当前值小于后面值,则当前值 = 后面值 - 当前值,并 i++ 下一次就不需要循环
- 每次遍历加在 sum 值里。
代码
javascript
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function (s) {
const map = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
}
let sum = 0
for (i = 0; i < s.length; i++) {
// 判断当前罗马数字是否小于前一个(左侧罗马数字比右侧大时为+,反之为-)
map[s[i]] < map[s[i + 1]] ? (sum -= map[s[i]]) : (sum += map[s[i]])
}
return sum
}