对于罗马数字转阿拉伯数字切入点有两个:
1、小数字出现在大数字前面只能使用一个(例如IV正确,IIV就是错误的)
2、除了情况1之外直接使用累加就ok
1 public int romanToInt(String s){ 2 if(s.length() < 1){ 3 return 0; 4 } 5 int result = 0; 6 for(int i=0;i<s.length();i++){ 7 result += getRomanValue(s.charAt(i)); 8 if(i<s.length()-1){ 9 if( getRomanValue(s.charAt(i)) < getRomanValue(s.charAt(i+1)) ){ 10 result -= 2*getRomanValue(s.charAt(i)); 11 } 12 } 13 } 14 return result; 15 } 16 public int getRomanValue(char c){ 17 Map<Character,Integer> map = new HashMap<Character, Integer>(); 18 map.put(‘I‘,1); 19 map.put(‘V‘,5); 20 map.put(‘X‘,10); 21 map.put(‘L‘,50); 22 map.put(‘C‘,100); 23 map.put(‘D‘,500); 24 map.put(‘M‘,1000); 25 return map.get(c); 26 }
时间: 2024-11-02 15:56:43