阅读背景:

LeetCode13.罗马数字转整数

来源:互联网 
package LeetCode1to100;

import java.util.HashMap;
import java.util.Map;

public class LeetCode13 {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("I", 1);
        map.put("V", 5);
        map.put("X", 10);
        map.put("L", 50);
        map.put("C", 100);
        map.put("D", 500);
        map.put("M", 1000);
        map.put("IV", 4);
        map.put("IX", 9);
        map.put("XL", 40);
        map.put("XC", 90);
        map.put("CD", 400);
        map.put("CM", 900);
        System.out.println(romanToInt("MCMXCIVIV", map));

    }

    public static int romanToInt(String s, Map map) {
        char[] ans = s.toCharArray();
        int res = 0;
        for (int i = 0; i < ans.length; i++) {
            res += (int)map.get(String.valueOf(ans[i]));
        }
        while (s.contains("IV")) {
            res -= 2;
            s = s.replaceFirst("IV", "");
        }
        while (s.contains("IX")) {
            res -= 2;
            s = s.replaceFirst("IX", "");
        }
        while (s.contains("XL")) {
            res -= 20;
            s = s.replaceFirst("XL", "");
        }
        while (s.contains("XC")) {
            res -= 20;
            s = s.replaceFirst("XC", "");
        }
        while (s.contains("CD")) {
            res -= 200;
            s = s.replaceFirst("CD", "");
        }
        while (s.contains("CM")) {
            res -= 200;
            s = s.replaceFirst("CM", "");
        }

        return res;
    }
}
package LeetCode1to100;

import java.util.HashMap



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: