您的位置:首页 > 其它

Roman to Integer

2015-06-06 11:38 260 查看
class Solution {
public:
int romanToInt(string s) {
int i,len=s.size();
int dig[20];
for(i=0;i<len;i++)
{
if(s[i]=='I')
dig[i]=1;
if(s[i]=='V')
dig[i]=5;
if(s[i]=='X')
dig[i]=10;
if(s[i]=='L')
dig[i]=50;
if(s[i]=='C')
dig[i]=100;
if(s[i]=='D')
dig[i]=500;
if(s[i]=='M')
dig[i]=1000;
}
int ans=0,cur=dig[0];
for(i=1;i<len;i++)
{
if(dig[i]<=dig[i-1])
{
ans+=cur;
}
else
{
ans-=cur;
}
cur=dig[i];
}
ans+=cur;
return ans;
}
};


View Code
罗马数字中I =1, V=5,X=10, L=50, C=100,D=500,M=1000;

小数字放在大数字右边是相加,如VII是7,小数字放在大数字左边是相减,如IX=9。

根据数字的组成原则,先表示大数字,在表示小数字,如3999,先表示3000 MMM,再表示900 CM,再表示90 XC,再表示9 IX

所以从左到右遍历,若右边的数字小于等于当前数,则加上当前数,若右边的数字大于等于当前数,则减去当前数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: