Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
1 public class Solution { 2 public int romanToInt(String s) { 3 if (s == null || s.length() < 1) { 4 throw new IllegalArgumentException("empty string"); 5 } 6 int r = 0; 7 int lastAdd = Integer.MAX_VALUE; 8 for (int i = 0; i < s.length(); i++) { 9 int t = charToInt(s.charAt(i)); 10 if (lastAdd < t) { 11 r -= 2 * lastAdd; 12 } 13 r += t; 14 lastAdd = t; 15 } 16 return r; 17 } 18 19 private int charToInt(char c) { 20 int r = 0; 21 switch (c) { 22 case 'I': 23 r = 1; 24 break; 25 case 'X': 26 r = 10; 27 break; 28 case 'C': 29 r = 100; 30 break; 31 case 'M': 32 r = 1000; 33 break; 34 case 'V': 35 r = 5; 36 break; 37 case 'L': 38 r = 50; 39 break; 40 case 'D': 41 r = 500; 42 break; 43 default: 44 throw new IllegalArgumentException("out of range"); 45 } 46 return r; 47 } 48 }

浙公网安备 33010602011771号