013.罗马数字转整数——二哥的 LeetCode 刷题笔记
鲁迅说过,三天不刷 LeetCode,手里发痒,今天继续来刷《二哥的 LeetCode 刷题笔记》吧。
题意
给你一个罗马数字,要求你给出它相应的整数。
至于罗马数字是什么,第 12 题已经解释过了,这里就不再赘述。
难度
简单
示例
示例 1:
输入: s = "III"
输出: 3
示例 2:
输入: s = "IV"
输出: 4
示例 3:
输入: s = "IX"
输出: 9
示例 4:
输入: s = "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
示例 5:
输入: s = "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
分析 1
这道题目和第 12 题是相反的,第 12 题是整数转罗马数字,这道题目是罗马数字转整数。
我们可以先把罗马数字和整数的对应关系列出来:
罗马数字 | 整数 |
---|---|
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
我们可以发现,罗马数字和整数的对应关系是一一对应的,所以我们可以把这些对应关系放到一个 Map 中,然后遍历罗马数字,依次取出对应的整数,然后相加即可。
需要注意的是,如果一个较小的数字在较大的数字前面,比如 IV
、IX
、XL
、XC
、CD
、CM
,需要减去这个较小的数字(因为它表示的是一个减法操作,如 IV 表示 4)。
来看题解:
真诚点赞 诚不我欺
回复