一、题目
二、思路
简单题,读懂题意。如果右边的数比当前的数大,则当前数需要加个负号,如IV
是5-1=4;如果右边的数比当前的数字小,则都是加法(注意最后一个数也是用加法的)。
三、代码
class Solution { private: unordered_map<char, int> mp = { {'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}, }; public: int romanToInt(string s) { int ans = 0; int n = s.size(); for(int i = 0; i < s.size(); i++){ int num = mp[s[i]]; if(i < n - 1 && num < mp[s[i + 1]]){ ans -= num; }else{ ans += num; } } return ans; } };