答案上很妙的解法
解的时候在罗马数字到数字的转换上卡壳了,本来想用哈希表,看到答案自己想复杂了
// 创建罗马数字到整数的映射表
Map<Character, Integer> romanMap = new HashMap<>();
romanMap.put('I', 1);
romanMap.put('V', 5);
romanMap.put('X', 10);
romanMap.put('L', 50);
romanMap.put('C', 100);
romanMap.put('D', 500);
romanMap.put('M', 1000);
class Solution {
public int romanToInt(String s) {
int sum = 0;
for(int i = 0; i< s.length();i++) {
int temp = getNumber(s.charAt(i));
if((i+1)<s.length()) {
if(getNumber(s.charAt(i))<getNumber(s.charAt(i+1))){
temp = -temp;
}
}
sum = sum + temp;
}
return sum;
}
private static int getNumber(char ch) {
// TODO Auto-generated method stub
switch(ch){
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;
default : return 0;
}
}
}