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;
}
};
思路:贴出罗马数字转换表:罗马数字共有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】13. Roman to Integer (2 solutions)
- 13. Roman to Integer--LeetCode Record
- leetcode13. Roman to Integer
- leetCode 13. Roman to Integer 字符串
- leetcode 13. Roman to Integer
- [leetcode]13. Roman to Integer
- leetcode13. Roman to Integer
- leetcode(6)13. Roman to Integer
- LeetCode算法题——13. Roman to Integer
- [LeetCode] 13. Roman to Integer
- 【leetcode】13. Roman to Integer
- LeetCode | 13. Roman to Integer
- LeetCode 13. Roman to Integer
- Leetcode-13. Roman to Integer
- [LeetCode] 13. Roman to Integer ☆☆
- [LeetCode] 13. Roman to Integer 罗马数字转为整数
- 【leetcode】13. Roman to Integer
- LeetCode 13. Roman to Integer
- [LeetCode]13. Roman to Integer
- 【Leetcode】:13. Roman to Integer 问题 in JAVA