Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
解题方法:
这个题目代码很简单,主要要懂得罗马数字的表示规律:罗马数字只包含I V X L C D M这几个字符,每个字符表示的数字从1 5 10 100等等各个不一样。从右往左,如果前一个字符大于等于后一个字符,那么值就为前一个字符扣除后一个字符。例如IIV V表示5大于I ,值为4,又I 不大于I 继续做减法,最后结果为3.
Code:
class Solution {
public:
int romanToInt(string s)
{
int len=s.size();
if(len==0)
return 0;
map<char,int> vmap;
vmap['I']=1;
vmap['V']=5;
vmap['X']=10;
vmap['L']=50;
vmap['C']=100;
vmap['D']=500;
vmap['M']=1000;
int k=len-1;
int ret=vmap[s[k--]];
while(k>=0)
{
if(vmap[s[k+1]]>vmap[s[k]])
ret-=vmap[s[k--]];
else
ret+=vmap[s[k--]];
}
return ret;
}
};