Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
将罗马数转换为实数,首先要明白罗马数转为实数的规则:
可以一次把输入字符串扫描一遍,从第一个字符开始,到最后一个字符为止,一次比较当前字符a和当前字符的下一个字符b。如果a< b ,解释为 - a+b,否则如果a >= b, 解释为a + b。
class Solution
{
public:
int romanToInt(string s)
{
map<char,int> m;
m.insert(make_pair('I',1));
m.insert(make_pair('V',5));
m.insert(make_pair('X',10));
m.insert(make_pair('L',50));
m.insert(make_pair('C',100));
m.insert(make_pair('D',500));
m.insert(make_pair('M',1000));
m.insert(make_pair('V',5));
m.insert(make_pair('X',10));
m.insert(make_pair('L',50));
m.insert(make_pair('C',100));
m.insert(make_pair('D',500));
m.insert(make_pair('M',1000));
int res;
for(int i=0;i<s.size()-1;i++)
{
if(m[s[i]]<m[s[i+1]])
res-=m[s[i]];
else
res+=m[s[i]];
}
res+=m[s[s.zize()-1]];
return res;
}
};