我的解答
public int romanToInt(String s) { char[] cs = s.toCharArray(); int arabicINumber = 1; int arabicVNumber = 5; int arabicXNumber = 10; int arabicLNumber = 50; int arabicCNumber = 100; int arabicDNumber = 500; int arabicMNumber = 1000; int res = 0; for (int i = 0; i < cs.length; i++) { switch (cs[i]) { case 'I': if (i == cs.length - 1){ res = res + arabicINumber; } else { if (cs[i + 1] == 'V'){ res = res + (arabicVNumber - arabicINumber); i++; continue; } if (cs[i + 1] == 'X'){ res = res + (arabicXNumber - arabicINumber); i++; continue; } res = res + arabicINumber; } continue; case 'X': if (i == cs.length - 1){ res = res + (arabicXNumber); } else { if (cs[i + 1] == 'L'){ res = res + (arabicLNumber - arabicXNumber); i++; continue; } if (cs[i + 1] == 'C'){ res = res + (arabicCNumber - arabicXNumber); i++; continue; } } continue; case 'C': if (i == cs.length - 1){ res = res + (arabicCNumber); } else { if (cs[i + 1] == 'D'){ res = res + (arabicDNumber - arabicCNumber); i++; continue; } if (cs[i + 1] == 'M'){ res = res + (arabicMNumber - arabicCNumber); i++; continue; } } continue; case 'V': res = res + (arabicVNumber); continue; case 'L': res = res + (arabicLNumber); continue; case 'D': res = res + (arabicDNumber); continue; case 'M': res = res + (arabicMNumber); continue; } } return res; }