int romanToInt(string s) {
map<char,int> mp;
mp['I']=1;
mp['V']=5;
mp['X']=10;
mp['L']=50;
mp['C']=100;
mp['D']=500;
mp['M']=1000;
int ret=0;
//int unit=1000;
int i=0;
while(i<s.length())
{
if (s[i]=='V'||s[i]=='L'||s[i]=='D')
{
ret += mp[s[i]];
int j=i;
i++;
while(i<s.length()&&mp[s[i]]==mp[s[j]]/5)
{
ret += mp[s[i]];
i++;
}
}
else
{
if (i+1<s.length()&&mp[s[i]]==mp[s[i+1]]/5)
{
ret += 4*mp[s[i]];
i += 2;
}
else
if (i+1<s.length()&&mp[s[i]]==mp[s[i+1]]/10)
{
ret += 9*mp[s[i]];
i += 2;
}
else
{
ret += mp[s[i]];
i++;
while(i<s.length()&&mp[s[i]]==mp[s[i-1]])
{
ret += mp[s[i]];
i++;
}
}
}
}
return ret;
}LeetCode Roman to Integer
最新推荐文章于 2017-06-16 10:49:07 发布
本文介绍了一种将罗马数字转换为整数的算法实现。通过定义字符与数值的映射,并遍历输入字符串,该算法能正确处理罗马数字中的加减组合规则,如IV表示4,IX表示9等。

609

被折叠的 条评论
为什么被折叠?



