解体思路:
1.写一个对象trans用于保存罗马和数字之间的映射关系
2.重点在于当数值小的出现在数值大的左边时,会减去该数,出现在右边时会加上该数,因此需要与后面的进行比较
3.在得到s时,首先给它转换成字符串,并在末位加一个0
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function(s) {
let trans = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
0: 0
}
s = s + '0'
let input = 0;
for(let i=0; i < s.length-1; i++){
if(trans[s[i]] < trans[s[i+1]]){ // 比较与后面一位的值
input += 0 - trans[s[i]] // 比后面小,传入负数. 0 - str 是为了将其转换成数字类型计算
} else{
input += trans[s[i]] -0 // str -0 是为了将字符串转换成数字类型
}
}
console.log(input);
return input
};