13.罗马数字转整数
通过硬编码的方式,将13个罗马数字和整数进行映射。
值得注意的细节:s.substring的(i,i+2) 包含s[i]和s[i+1] ,不包含s[i+2]。
public int romanToInt(String s) { int[] store = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[] strs = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; HashMap<String,Integer> maps= new HashMap<>(); for (int a = 0; a < store.length; a++) { maps.put(strs[a],store[a]); } int result = 0; for (int i = 0; i < s.length(); ) { if (i+1 < s.length() && maps.containsKey(s.substring(i,i+2)) ) { result += maps.get(s.substring(i,i+2)); i+=2; }else{ result += maps.get(s.substring(i,i+1)); i++; } } return result; }