LeetCode第十三题-将罗马数字转化为数字

问题简介:将输入的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,如果不小于就加上当前罗马字符对应的数值

小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容