开始我觉得此题很复杂,因为要考虑很多组合因素,但是仔细读题思来想去这道题其实很简单,把所有数字看做一个整体,如果反过来看其实就是遇小数做减法,遇大数做加法的问题。
var romanToInt = function(s) {
const symbolValues = new Map()
symbolValues.set('I', 1)
symbolValues.set('V', 5)
symbolValues.set('X', 10)
symbolValues.set('L', 50)
symbolValues.set('C', 100)
symbolValues.set('D', 500)
symbolValues.set('M', 1000)
let sum = symbolValues.get(s[s.length-1])
for(let i=s.length-2;i>=0;i--){
if(symbolValues.get(s[i])<symbolValues.get(s[i+1])){sum-=symbolValues.get(s[i])}
else{sum+=symbolValues.get(s[i])}
}
return sum
}