Skip to content

13、罗马数字转整数

js
;(function () {
  /**
     * 13. 罗马数字转整数
     * 
     * 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
     * 
     * 字符          数值
        I             1
        V             5
        X             10
        L             50
        C             100
        D             500
        M             1000
     * 
     */

  function romanToInt(s: string): number {
    // 方法一:
    let map = new Map()
    map.set('I', 1)
    map.set('V', 5)
    map.set('X', 10)
    map.set('L', 50)
    map.set('C', 100)
    map.set('D', 500)
    map.set('M', 1000)
    let ans: number = 0
    const n = s.length
    for (let i = 0; i < n; ++i) {
      const curVal = map.get(s[i])
      if (i < n - 1 && curVal < map.get(s[i + 1])) {
        ans -= curVal
      } else {
        ans += curVal
      }
    }
    return ans
  }

  console.log(romanToInt('IV'))
})()