Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.
题目的意思是:给定一个罗马数字,要求转化成一个整数。罗马数字的范围是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[re.size()-1];
return sum;
}
};
人生易老,唯有陪伴最长情,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。 同时请,关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法等内容。扫一扫下方关注我们的微信公众号。