#include<iostream>
using namespace std;
#include<unordered_map>
class Solution {
public:
int romanToInt(string s) {
int res=0;
unordered_map<char,int> Map = { {'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000} };
for (int i = 0; i < s.size(); i++)
{
if (i == s.size() - 1 || Map[s[i]] >= Map[s[i + 1]]) res += Map[s[i]];
else res -= Map[s[i]];
}
return res;
}
};
刷题总结:
学会map和unordered_map的区别,罗马数中若当前的数小于与后面的数,则用当前res减去当前罗马数对应的阿拉伯数字,eles加上当前阿拉伯数字。