Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
public int romanToInt(String s) { HashMap<String, Integer> hm = new HashMap<String, Integer>(); hm.put("I", 1); hm.put("II", 2); hm.put("III", 3); hm.put("IV", 4); hm.put("V", 5); hm.put("VI", 6); hm.put("VII", 7); hm.put("VIII", 8); hm.put("IX", 9); hm.put("X", 10); hm.put("XX", 20); hm.put("XXX", 30); hm.put("XL", 40); hm.put("L", 50); hm.put("LX", 60); hm.put("LXX", 70); hm.put("LXXX", 80); hm.put("XC", 90); hm.put("C", 100); hm.put("CC", 200); hm.put("CCC", 300); hm.put("CD", 400); hm.put("D", 500); hm.put("DC", 600); hm.put("DCC", 700); hm.put("DCCC", 800); hm.put("CM", 900); hm.put("M", 1000); hm.put("MM", 2000); hm.put("MMM", 3000); int len = s.length(); int num = 0; String currentStr = ""; String preStr = ""; for(int i = 0; i < len; i ++){ char ch = s.charAt(i); currentStr = preStr + ch; if(hm.containsKey(currentStr)){ preStr = currentStr; }else{ num = num + hm.get(preStr); preStr = "" + ch; } } num = num + hm.get(preStr); return num; }
Roman to Integer,布布扣,bubuko.com
原文地址:http://blog.csdn.net/u010378705/article/details/31745219