Skip to content

Latest commit

 

History

History
25 lines (24 loc) · 948 Bytes

13. Roman to Integer.md

File metadata and controls

25 lines (24 loc) · 948 Bytes

题目

13. Roman to Integer

思路

简单的一个题。用一个map存储对应关系,从倒序遍历字符串,每次都从对应关系中找出数值加入result。

  • 当出现4,9时,如LIXII,当遍历到'X'时,按照正常规律,我们将其加入结果。而当到下一个元素'I'时,我们需要减去两个'I'。

代码

class Solution {
public:
    int romanToInt(string s) {
	map<char, int> m{ make_pair('I', 1), make_pair('V', 5), make_pair('X', 10),
		make_pair('L', 50), make_pair('C', 100), make_pair('D', 500), make_pair('M', 1000) };
	int result = m[s.back()];
	if (s.size() == 1) return m[s[0]];
	for (int i = s.size() - 2; i >= 0; i--){
		result += m[s[i]];
		if (m[s[i]]<m[s[i + 1]]) result -= 2 * m[s[i]];
	}
	return result;
}
};

一些知识点

map的初始化