¥13 数字与字符串间转换 ¥ 罗马数字转整数

class Solution {

    public int romanToInt(String s) {
        int[] arr={1,5,10,50,100,500,1000};
        //String[] symbols = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
        char[] symbols = {'I','V','X','L','C','D','M'};
        int sum=0;
        char[] roman_string= s.toCharArray();
        for (int i=0;i<roman_string.length;i++){
       
             if((roman_string[i]=='I')&&i+1<roman_string.length&&(roman_string[i+1]=='V'))
               { sum+=4;
                i++;
                continue;}
            if((roman_string[i]=='I')&&i+1<roman_string.length&&(roman_string[i+1]=='X'))
                {sum+= 9;
                i++;
                continue;}
            if(roman_string[i]=='X'&&i+1<roman_string.length&&roman_string[i+1]=='L')
                {sum+= 40;
                i++;
                continue;}
            if(roman_string[i]=='X'&&i+1<roman_string.length&&roman_string[i+1]=='C')
               {sum+=90;
                i++;
                continue;}
            if(roman_string[i]=='C'&&i+1<roman_string.length&&roman_string[i+1]=='D')
               {sum+=400;
               i++;
                continue;}
            if(roman_string[i]=='C'&&i+1<roman_string.length&&roman_string[i+1]=='M')
                {sum+= 900;
                i++;
                continue;}
            
            for(int j=0;j<symbols.length;j++){
            if (roman_string[i]==symbols[j])
                {
                    sum+=arr[j];
                    break;
                }
            }
        }
    return sum;
    }
}
#内存优化
class Solution {

    public int romanToInt(String s) {
        int[] arr={1,5,10,50,100,500,1000};
        //String[] symbols = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
        char[] symbols = {'I','V','X','L','C','D','M'};
        int sum=0;
        int len=s.length();
        //char[] roman_string= s.toCharArray();
        for (int i=0;i<len;i++){
       
            if((s.charAt(i)=='I')&&i+1<len&&(s.charAt(i+1)=='V'))
               { sum+=4;
                i++;
                continue;}
            if((s.charAt(i)=='I')&&i+1<len&&(s.charAt(i+1)=='X'))
                {sum+= 9;
                i++;
                continue;}
            if(s.charAt(i)=='X'&&i+1<len&&s.charAt(i+1)=='L')
                {sum+= 40;
                i++;
                continue;}
            if(s.charAt(i)=='X'&&i+1<len&&s.charAt(i+1)=='C')
               {sum+=90;
                i++;
                continue;}
            if(s.charAt(i)=='C'&&i+1<len&&s.charAt(i+1)=='D')
               {sum+=400;
               i++;
                continue;}
            if(s.charAt(i)=='C'&&i+1<len&&s.charAt(i+1)=='M')
                {sum+= 900;
                i++;
                continue;}
            
            for(int j=0;j<symbols.length;j++){
            if (s.charAt(i)==symbols[j])
                {
                    sum+=arr[j];
                    break;
                }
            }
        }
    return sum;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41557627/article/details/114293275