# 罗马数字转整数

<div class="notranslate">
    <p>罗马数字包含以下七种字符：&nbsp;<code>I</code>，&nbsp;<code>V</code>，&nbsp;<code>X</code>，&nbsp;<code>L</code>，<code>C</code>，<code>D</code>&nbsp;和&nbsp;<code>M</code>。
    </p>

    <pre><strong>字符</strong>          <strong>数值</strong>
I             1
V             5
X             10
L             50
C             100
D             500
M             1000</pre>

    <p>例如， 罗马数字 2 写做&nbsp;<code>II</code>&nbsp;，即为两个并列的 1。12
        写做&nbsp;<code>XII</code>&nbsp;，即为&nbsp;<code>X</code>&nbsp;+&nbsp;<code>II</code>&nbsp;。 27
        写做&nbsp;&nbsp;<code>XXVII</code>,
        即为&nbsp;<code>XX</code>&nbsp;+&nbsp;<code>V</code>&nbsp;+&nbsp;<code>II</code>&nbsp;。</p>

    <p>通常情况下，罗马数字中小的数字在大的数字的右边。但也存在特例，例如 4 不写做&nbsp;<code>IIII</code>，而是&nbsp;<code>IV</code>。数字 1 在数字 5 的左边，所表示的数等于大数 5
        减小数 1 得到的数值 4 。同样地，数字 9 表示为&nbsp;<code>IX</code>。这个特殊的规则只适用于以下六种情况：</p>

    <ul>
        <li><code>I</code>&nbsp;可以放在&nbsp;<code>V</code>&nbsp;(5) 和&nbsp;<code>X</code>&nbsp;(10) 的左边，来表示 4 和 9。</li>
        <li><code>X</code>&nbsp;可以放在&nbsp;<code>L</code>&nbsp;(50) 和&nbsp;<code>C</code>&nbsp;(100) 的左边，来表示 40
            和&nbsp;90。&nbsp;</li>
        <li><code>C</code>&nbsp;可以放在&nbsp;<code>D</code>&nbsp;(500) 和&nbsp;<code>M</code>&nbsp;(1000) 的左边，来表示&nbsp;400
            和&nbsp;900。</li>
    </ul>

    <p>给你一个整数，将其转为罗马数字。</p>

    <p>&nbsp;</p>

    <p><strong>示例&nbsp;1:</strong></p>

    <pre><strong>输入:</strong>&nbsp;num = 3
<strong><br />输出:</strong> "III"</pre>

    <p><strong>示例&nbsp;2:</strong></p>

    <pre><strong>输入:</strong>&nbsp;num = 4
<strong><br />输出:</strong> "IV"</pre>

    <p><strong>示例&nbsp;3:</strong></p>

    <pre><strong>输入:</strong>&nbsp;num = 9
<strong><br />输出:</strong> "IX"</pre>

    <p><strong>示例&nbsp;4:</strong></p>

    <pre><strong>输入:</strong>&nbsp;num = 58
<strong><br />输出:</strong> "LVIII"
<strong><br />解释:</strong> L = 50, V = 5, III = 3.
    </pre>

    <p><strong>示例&nbsp;5:</strong></p>

    <pre><strong>输入:</strong>&nbsp;num = 1994
<strong><br />输出:</strong> "MCMXCIV"
<strong><br />解释:</strong> M = 1000, CM = 900, XC = 90, IV = 4.</pre>

    <p>&nbsp;</p>

    <p><strong>提示：</strong></p>

    <ul>
        <li><code>1 &lt;= num &lt;= 3999</code></li>
    </ul>
</div>

## template

```python
class Solution:
	def romanToInt(self, s: str) -> int:
		units = [
			["M", 1000, 1],
			["CM", 900, 2],
			["D", 500, 1],
			["CD", 400, 2],
			["C", 100, 1],
			["XC", 90, 2],
			["L", 50, 1],
			["XL", 40, 2],
			["X", 10, 1],
			["IX", 9, 2],
			["V", 5, 1],
			["IV", 4, 2],
			["I", 1, 1]
		]
		end = len(s)
		start = 0
		i = 0
		r = 0
		while i < len(units):
			unit = units[i][0]
			value = units[i][1]
			step = units[i][2]
			if end-start >= step and s[start:start+step] == unit:
				r += value
				start += step
			else:
				i += 1
		return r
# %%
s = Solution()
print(s.romanToInt("III"))
```

## 答案

```python

```

## 选项

### A

```python

```

### B

```python

```

### C

```python

```