leetcode-13 罗马数字转整数

描述

img

img

思路

将所有的组合罗马数字替换成新的单个字符,建立字典,依次计算相加即可

例如:IV ------> a 记为4,IX --------> b 记为9,以此类推

代码

class Solution {
    public int romanToInt(String s) {
    	s = s.replace("IV","a");
        s = s.replace("IX","b");
        s = s.replace("XL","c");
        s = s.replace("XC","d");
        s = s.replace("CD","e");
        s = s.replace("CM","f");
        
        int res = 0;
        for(int i = 0; i < s.length(); i++){
            res += getValue(s.charAt(i));
        }
        return res;
    }
    
    public int getValue(char c){
        switch(c){
            case 'I': return 1;
            case 'V': return 5;
            case 'X': return 10;
            case 'L': return 50
            case 'C': return 100;
            case 'D': return 500;
            case 'M': return 1000;
            case 'a': return 4;
            case 'b': return 9;
            case 'c': return 40;
            case 'd': return 90
            case 'e': return 400;
            case 'f': return 900;
        }
        return 0;
    }
}

拓展:12. 整数转罗马数字

class Solution{
    public String intToRoman(int num){
        int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
        String[] reps = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
      	
        String res = "";
        for(int i = 0; i < 13; i ++){
            while(num >= values[i]){
                num -= values[i];
                res += reps[i];
            }
        }
        return res;
    }
}
posted on 2021-05-15 11:23  caoshikui  阅读(56)  评论(0)    收藏  举报