就遵从罗马字的规则就好了,一个个读。
如果前一个符号比当前的小,说明是4IV,9IX,40XL这种符号,记得减去即可。
class Solution
{
public:
int romanToInt(string s)
{
map<char, int> hash;
hash['I'] = 1;
hash['V'] = 5;
hash['X'] = 10;
hash['L'] = 50;
hash['C'] = 100;
hash['D'] = 500;
hash['M'] = 1000;
int len = s.size();
int res = 0;
for (int i = 0; i < len; i++)
{
if (i > 0 && hash[s[i]] > hash[s[i - 1]])
{
res += (hash[s[i]] - 2 * hash[s[i - 1]]);
}
else
{
res += hash[s[i]];
}
}
return res;
}
};