[LeetCode] Roman to Integer 罗马数字转化成整数
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:58
IVXLCDM
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
IIXIIXIIXXVIIXXVII
IIIIIVIX
IVXXLCCDM
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.
Example 1:
Input: "III"
Output: 3
Example 2:
Input: "IV"
Output: 4
Example 3:
Input: "IX"
Output: 9
Example 4:
Input: "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.
Example 5:
Input: "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
转化成数字问题,我们需要对于很熟悉才能完成转换。以下截自百度百科:
罗马数字是最早的数字表示方式,比阿拉伯数字早2000多年,起源于罗马。
如今我们最常见的罗马数字就是钟表的表盘符号:Ⅰ,Ⅱ,Ⅲ,Ⅳ(IIII),Ⅴ,Ⅵ,Ⅶ,Ⅷ,Ⅸ,Ⅹ,Ⅺ,Ⅻ……
对应阿拉伯数字(就是现在国际通用的数字),就是1,2,3,4,5,6,7,8,9,10,11,12。(注:阿拉伯数字其实是古代印度人发明的,后来由阿拉伯人传入欧洲,被欧洲人误称为阿拉伯数字。)
class Solution {
public:
int romanToInt(string s) {
int res = ;
unordered_map<char, int> m{{'I', }, {'V', }, {'X', }, {'L', }, {'C', }, {'D', }, {'M', }};
for (int i = ; i < s.size(); ++i) {
int val = m[s[i]];
if (i == s.size() - || m[s[i+]] <= m[s[i]]) res += val;
else res -= val;
}
return res;
}
};class Solution {
public:
int romanToInt(string s) {
int res = ;
unordered_map<char, int> m{{'I', }, {'V', }, {'X', }, {'L', }, {'C', }, {'D', }, {'M', }};
for (int i = ; i < s.size(); ++i) {
if (i == || m[s[i]] <= m[s[i - ]]) res += m[s[i]];
else res += m[s[i]] - * m[s[i - ]];
}
return res;
}
};
相关文章
-
[loj3031]聚会
[loj3031]聚会
- 互联网
- 2026年04月04日
-
[Lua]内存泄漏与垃圾回收
[Lua]内存泄漏与垃圾回收
- 互联网
- 2026年04月04日
-
[MFC]获取一些用户文件夹
[MFC]获取一些用户文件夹
- 互联网
- 2026年04月04日
-
[LeetCode] Integer to Roman 整数转化成罗马数字
[LeetCode] Integer to Roman 整数转化成罗马数字
- 互联网
- 2026年04月04日
-
[LeetCode] 213. 打家劫舍 II
[LeetCode] 213. 打家劫舍 II
- 互联网
- 2026年04月04日
-
[kubernetes]安装dashboard
[kubernetes]安装dashboard
- 互联网
- 2026年04月04日






