算法 13. 罗马数字转整数

LeetCode https://leetcode.cn/problems/roman-to-integer/

题目描述

罗马数字包含以下七种字符: IVXLCDM
给定一个罗马数字,将其转换成整数。

思路

罗马数字中小的数字在大的数字的右边, 这种情况下, 累计所有值即可, 而当小的数字在大数左边时, 减去即可

代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution
{
public:
int romanToInt(std::string s) {
int result = 0;
int max = 1;
for (int i = (int)s.size() - 1; i >= 0; --i) {
const int& value = roman[s[i]];
if (value >= max) {
result += value;
max = value;
}
else {
result -= value;
}
}
return result;
}
};