LeetCode 13. Roman to Integer

first:

class Solution {
    public int romanToInt(String s) {
        char[] charArray = s.toCharArray();
        int result =0;
        for(int i=0;i<charArray.length;i++){
            if(charArray[i]=='I'&&(charArray[i+1]=='V'||charArray[i+1]=='X')){
                result--;
            }else if(charArray[i]=='X'&&(charArray[i+1]=='L'||charArray[i+1]=='C')){
                result -=10;
            }else if(charArray[i]=='C'&&(charArray[i+1]=='D'||charArray[i+1]=='M')){
                result -=100;
            }else{
                switch (charArray[i]){
                case 'I':result++;
                         break;
                case 'V':result+=5;
                         break;
                case 'X':result+=10;
                         break;
                case 'L':result+=50;
                         break;
                case 'C':result+=100;
                         break;
                case 'D':result+=500;
                         break;
                case 'M':result+=1000;
                }        
            }            
        }
        return result;
    }
}

result:

Run Code Status: Runtime Error
Run Code Result:
Your input

"III"

Your answer

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at Solution.romanToInt(Solution.java:6)
    at __DriverSolution__.__helper__(__Driver__.java:8)
    at __Driver__.main(__Driver__.java:52)

second:

class Solution {
    public int romanToInt(String s) {
        char[] charArray = s.toCharArray();
        int result =0;
        for(int i=0;i<charArray.length;i++){
            if(charArray[i]=='I'&&i+1<charArray.length&&(charArray[i+1]=='V'||charArray[i+1]=='X')){
                result--;
            }else if(charArray[i]=='X'&&i+1<charArray.length&&(charArray[i+1]=='L'||charArray[i+1]=='C')){
                result -=10;
            }else if(charArray[i]=='C'&&i+1<charArray.length&&(charArray[i+1]=='D'||charArray[i+1]=='M')){
                result -=100;
            }else{
                switch (charArray[i]){
                case 'I':result++;
                         break;
                case 'V':result+=5;
                         break;
                case 'X':result+=10;
                         break;
                case 'L':result+=50;
                         break;
                case 'C':result+=100;
                         break;
                case 'D':result+=500;
                         break;
                case 'M':result+=1000;
                }        
            }            
        }
        return result;
    }
}

result:

conclusion:

猜你喜欢

转载自www.cnblogs.com/hzg1981/p/8966487.html