013 · Roman to Integer

algorithm
Published

May 6, 2026

Problem

罗马数字包含以下七个符号:

Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000

通常情况下,罗马数字从左到右按从大到小排列,表示把这些符号的值相加。

例如:

  • II 表示 2
  • XII 表示 12
  • XXVII 表示 27

但有些数字会使用减法形式。较小的符号放在较大的符号左边时,表示需要减去这个较小的值。

常见的减法形式包括:

  • I 可以放在 VX 前面,表示 49
  • X 可以放在 LC 前面,表示 4090
  • C 可以放在 DM 前面,表示 400900

给定一个罗马数字字符串 s,请将它转换成对应的整数。

Examples

示例 1

Input:  s = "III"
Output: 3

解释:III = 1 + 1 + 1 = 3

示例 2

Input:  s = "LVIII"
Output: 58

解释:L = 50V = 5III = 3,所以结果是 58

示例 3

Input:  s = "MCMXCIV"
Output: 1994

解释:M = 1000CM = 900XC = 90IV = 4,所以结果是 1994

Constraints

  • \(1 \leq\) s.length \(\leq 15\)
  • s 只包含字符 I, V, X, L, C, D, M
  • s 是一个合法的罗马数字
  • s 表示的整数范围是 \(1\)\(3999\)