解:
- 首先建立hashNum存储所有罗马数
- 定义result存储转换成的数
- 防止数组越界,遍历s字符串到倒数第二个数(实际上越界返回undefined走false然后+,答案也是正确的,直接return result)
- 如果左边小于右边,则是IV这种形式的,所以先-
- 如果左边大于右边,那就直接 +
- 最后一个数必然是 +,在return的时候补上
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function(s) {
var hashNum = {
"I":1,
"V":5,
"X":10,
"L":50,
"C":100,
"D":500,
"M":1000
}
var result = 0;
var length = s.length;
for(let i = 0; i < length -1; i++){
hashNum[s[i]] < hashNum[s[i+1]] ? result -= hashNum[s[i]] :result += hashNum[s[i]]
}
return result + hashNum[s[length-1]]
};