Total Accepted: 79915
Total Submissions: 205049
Difficulty: Easy
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
Subscribe to see which companies asked this question
Show Similar Problems
Have you met this question in a real interview?
Yes
No
根据罗马数字还原10进制整数。
模拟题
O(n)从左到右扫一遍就行了。
class Solution {
public:
int romanToInt(string s)
{
int num=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='I')
num+=1;
if(s[i]=='V')
{
if(i!=0 && s[i-1]=='I')
num+=3;
else
num+=5;
}
if(s[i]=='X')
{
if(i!=0 && s[i-1]=='I')
num+=8;
else
num+=10;
}
if(s[i]=='L')
{
if(i!=0 && s[i-1]=='X')
num+=30;
else
num+=50;
}
if(s[i]=='C')
{
if(i!=0 && s[i-1]=='X')
num+=80;
else
num+=100;
}
if(s[i]=='D')
{
if(i!=0 && s[i-1]=='C')
num+=300;
else
num+=500;
}
if(s[i]=='M')
{
if(i!=0 && s[i-1]=='C')
num+=800;
else
num+=1000;
}
}
return num;
}
};