# [13. Roman to Integer](https://leetcode.com/problems/roman-to-integer/description/) # 思路 罗马数字转阿拉伯数字。七个大写字母对应七个数,对应关系可以用一个数组(或者map)来实现。 用res代表结果,将代表罗马数字的字符串s从前往后遍历,如果当前字母对应的数大于等于下一个字母对应的数,则res加上对应的数,否则减。 注意:根据题意是没有可能发生s[i] < s[i + 1] < s[i + 2]的。 # C++ ``` C++ class Solution { public: int romanToInt(string s) { vectormp(26); mp['I' - 'A'] = 1; mp['V' - 'A'] = 5; mp['X' - 'A'] = 10; mp['L' - 'A'] = 50; mp['C' - 'A'] = 100; mp['D' - 'A'] = 500; mp['M' - 'A'] = 1000; int res = mp[s[s.size() - 1] - 'A']; for(int i = 0; i < s.size() - 1; i++){ if(mp[s[i] - 'A'] < mp[s[i + 1] - 'A']) res -= mp[s[i] - 'A']; else res += mp[s[i] - 'A']; } return res; } }; ```