问题简介:将输入的String类型的罗马数字转化为int数值
问题详解:罗马数字由七个不同的符号表示:I,V,X,L,C,D和M
符号-数值
I - 1
V - 5
X -10
L - 50
C - 100
D - 500
M - 1000
例如,2用罗马数字写成II,只有两个I加在一起,十二写为XII,解释为X + II, 二十七写成XXVII,即XX + V + II,
罗马数字通常从左到右从最大到最小,但是,四个数字不是IIII,相反,第四个写为IV,因为一个在五个之前,我们减去四个,同样的原则适用于九,即IX,有六个使用减法的实例:
我可以放在V(5)和X(10)之前做4和9,
X可以放在L(50)和C(100)之前,以产生40和90,
C可以放在D(500)和M(1000)之前,以产生400和900,
给定一个罗马数字,将其转换为整数,输入保证在1到3999的范围内.
举例:
1:
输入: “III”
输出: 3
2:
输入: “IV”
输出: 4
3:
输入: “IX”
输出: 9
4:
输入: “LVIII”
输出: 58
解释: L = 50, V= 5, III = 3.
5:
输入: “MCMXCIV”
输出: 1994
解释: M = 1000, CM = 900, XC = 90 and IV = 4.
解法一:
笨方法先将所有罗马字符对应的数值求和,再考虑特殊的4/9情况
解法二:
每个字符与后面的字符比较,如果小于后面的字符例如IV,就减去当前的I,如果不小于就加上当前罗马字符对应的数值
小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海