题目链接这里
这个题目难度倒是没有。但是特别的繁琐。
要注意几个情况:
ICX都可以出现在左边。特别要注意的是X这个情况,特别是它左边是C的时候。
public class Solution {
public static void main(String args[])
{
System.out.println(romanToInt("MMCCCXCIX"));
}
public static int romanToInt(String s) {
int result=0;
int current=0;
int n=s.length();
char temp='0';
char pre='0';
int i;
for(i=0;i<n;i++)
{
if(i!=0)
{
pre=temp;
}
temp=s.charAt(i);
switch (temp) {
case 'I':
if(pre!='I')
{
result+=current;
current=1;
}
else
{
current+=1;
}
break;
case 'V':
result+=5;
if(pre!='I')
{
result+=current;
}
else
{
result-=current;
}
current=0;
break;
case 'X':
if(pre=='I')
{
result+=10;
result-=current;
current=0;
}
else if(pre=='C')
{
result+=current;
current=10;
}
else
{
current+=10;
}
break;
case 'L':
if(pre=='I'||pre=='X')
{
result-=current;
}
else
{
result+=current;
}
result+=50;
current=0;
break;
case 'C':
if(pre=='I'||pre=='X')
{
result+=100;
result-=current;
current=0;
}
else
{
current+=100;
}
break;
case 'D':
result+=500;
result-=current;
current=0;
break;
case 'M':
result+=1000;
result-=current;
current=0;
break;
}
}
return result+current;
}
}
错误“MMCCCXCIX”