罗马数字包括以下七种类型的字符: I、v、x、l、c、d和m :

文字的数值

I 1

V 5

X 10

L 50

C 100

D 500

M 1000

例如,罗马数字2写为II的话,就是2个并列的1。 写12XII的话,就是XII。 写XXVII的话,就是XXVII。

罗马数字中较小的数字通常在较大数字的右边。 但是,也存在例如4不写为IIII,而是设为IV等特例。 数字1在数字5的左侧,显示的数量等于从大数5减去数学1后的数字4。 同样,数字9表示为IX。 此特殊规则仅适用于以下六种情况:

I可以放在v(5)和x (10 )的左侧,表示4和9。

x可以位于L(50 )和c (100 )的左侧,可以表示40和90。

c可以位于D(500 )和1000 )的左侧,表示400和900。

给出罗马数字,并将其转换为整数。 确保输入在3999范围内。

/*根据主题的记述,罗马数字由I、v、x、l、c、d、m构成; 如果较小的值位于较大值的左侧,请减小该值。 例如,IV=5-1=4; 如果较小的值位于较大值的右侧,则加上较小的值。 例如,VI=5 1=6; 综上所述,由于右值永远为正,所以最后一位必然为正。 */class解决方案{ publicintromantoint (strings ) { int sum=0; intprenum=getvalue(s.charat(0); for(intI=1; i s.length (; I ) intnum=getvalue(s.charat(I ); if(prenumnum ) { sum -=preNum; } else { sum =preNum; } preNum=num; } sum =preNum; 返回和; }专用获取交换机(ch ) ch ) { case ‘ I ‘ :返回1; Case ‘ v ‘ :返回5; Case ‘ x ‘ :返回10; Case ‘ l ‘ :返回50; Case ‘ c ‘ :返回100; Case ‘ d ‘ :返回500; case ‘M’: return 1000; default :返回0; }作者: donespeak链接: https://leet code-cn.com/problems/Roman-to-integer/solution/Yong-Shi-993 nei-Cun-9873 非商业转载请注明出处。