var romanToInt = function(s) {const tmap = {I: 1,V: 5,X: 10,L: 50,C: 100,D: 500,M: 1000,};let res = 0;for (let i=0;i<s.length;i++) {if (i<s.length-1&&tmap[s[i]]<tmap[s[i+1]]) {res -= tmap[s[i]]} else {res += tmap[s[i]]}}return res;};
思路
- 建立映射
- 罗马数字转整数的规律:如果左边小于右边则使用右边的值减去左边,反之则正常相加
例子
- IX=9,因为I = 1,X = 9,所以I < X,最后用X - I = 10 - 1 = 9
- LVIII, 因为L = 50 > V = 5 > I = 1,所以结果为L + V + I + I + I = 50+5+1+1+1=58

