题目描述:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
本题较简单,我采用的方法是从字符串第一位开始进行识别并确定其代表的数值大小后加入integer,根据罗马数字表示规则,进行分类讨论,识别完后将字符删去。
class Solution {
public:
int romanToInt(string s) {
int result=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='M') result+=1000;
else if(s[i]=='D') result+=500;
else if(s[i]=='L') result+=50;
else if(s[i]=='V') result+=5;
if(i<(s.size()-1)&&s[i]=='C'&&s[i+1]=='M')
{
result+=900;
i++;
}
if(i<(s.size()-1)&&s[i]=='C'&&s[i+1]=='D')
{
result+=400;
i++;
}
else if(i<(s.size()-1)&&s[i]=='X'&&s[i+1]=='C')
{
result+=90;
i++;
}
else if(i<(s.size()-1)&&s[i]=='X'&&s[i+1]=='L')
{
result+=40;
i++;
}
else if(i<(s.size()-1)&&s[i]=='I'&&s[i+1]=='X')
{
result+=9;
i++;
}
else if(i<(s.size()-1)&&s[i]=='I'&&s[i+1]=='V')
{
result+=4;
i++;
}
else
{
if(s[i]=='C') result+=100;
else if(s[i]=='X') result+=10;
else if(s[i]=='I') result+=1;
}
}
return result;
}
};