leetcode Roman to Integer

题目链接这里

这个题目难度倒是没有。但是特别的繁琐。
要注意几个情况:
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”

你可能感兴趣的:(leetcode Roman to Integer)