1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| class Solution { public int romanToInt(String s) { int res = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); char nextC = i + 1 < s.length() ? s.charAt(i + 1) : ' '; if ((c == 'I' && (nextC == 'V' || nextC == 'X')) || (c == 'X' && (nextC == 'L' || nextC == 'C')) || (c == 'C' && (nextC == 'D' || nextC == 'M'))) { res += romanUnitToInt("" + c + nextC); i++; } else { res += romanUnitToInt(String.valueOf(c)); } }
return res; }
private int romanUnitToInt(String s) { switch (s) { 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 "IV": return 4; case "IX": return 9; case "XL": return 40; case "XC": return 90; case "CD": return 400; case "CM": return 900; default: throw new IllegalArgumentException("Illegal raman unit: " + s); } } }
|