您的位置:首页 > 其它

Leetcode 13. Roman to Integer

2018-01-01 18:56 309 查看
题目的意思是:给定一个罗马数字,要求转化成一个整数。罗马数字的范围是1-3999之间。

 

思路:贴出罗马数字转换表:罗马数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。右加左减:

1 在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。

2 在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字。

class Solution {
public:
int romanToInt(string s) {
int sum=0;
vector<int>re(s.size(),0);
for(int i=0; i<s.size(); ++i)
{
switch(s[i])
{
case 'I':
re[i]=1;
break;
case 'V':
re[i]=5;
break;
case 'X':
re[i]=10;
break;
case 'L':
re[i]=50;
break;
case 'C':
re[i]=100;
break;
case 'D':
re[i]=500;
break;
case 'M':
re[i]=1000;
break;
}
}
for(int i=0; i<re.size()-1;i++)
{
if(re[i]<re[i+1])
sum-=re[i];
else
sum+=re[i];
}
sum+=re.back();
return sum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode