Skip to content

Code:

js
/**
 * @param {string} s
 * @return {number}
 */
var romanToInt = function(s) {
    const length = s.length
    let sum = 0

    const map = {
        "I": 1,
        "V": 5,
        "X": 10,
        "L": 50,
        "C": 100,
        "D": 500,
        "M": 1000
    }

    for (let i = 0; i < length; i++) {
        let current = map[s[i]]
        let next = map[s[i + 1]]

        sum = next && next > current ? sum - current : sum + current
    }

    return sum
};


// 时间复杂度:O(n)
// 空间复杂度:O(1)

// 测试用例
console.log(romanToInt("III"))
console.log(romanToInt("IV"))
console.log(romanToInt("IX"))
console.log(romanToInt("LVIII"))
console.log(romanToInt("MCMXCIV"))
console.log(romanToInt("CMXCIX"))
console.log(romanToInt("XLIX"))

❤ With Algorithm