13.罗马数字到整数
罗马数字包含以下七个字符:I、V、X、L、C、D和m
字符数值
一. 1
五. 5
X 10
L 50
C 100
D 500
M 1000
例如,罗马数字2写成II,即两个并列的1。12写XII,即X二。27写成二十七,即XX五二。
通常罗马数字中的中小数字在大数字的右边。但是也有特例,比如4不是写成IIII,而是IV。数字1在数字5的左边,表示的数字等于数字5减去数字1得到的数字4。类似地,数字9表示为IX。此特殊规则仅适用于以下六种情况:
我可以放在V(5)和X(10)的左边,代表4和9。
x可以放在L(50)和C(100)的左边,表示40和90。
c可以放在D(500)和M(1000)的左边,表示400和900。
给出一个罗马数字,并将其转换为整数。
资料来源:LeetCode
链接:https://leetcode-cn.com/problems/roman-to-integer
版权归领扣网所有。商业转载请联系官方授权,非商业转载请注明出处。
导入Java . util . HashMap;
导入Java . util . map;
导入Java . util . scanner;
解决方案类{
私有静态映射字符,整数值映射;
静态{
value map=new HashMap();
valueMap.put('I ',1);
valueMap.put('V ',5);
valueMap.put('X ',10);
valueMap.put('L ',50);
valueMap.put('C ',100);
valueMap.put('D ',500);
valueMap.put('M ',1000);
}
公共静态整数字符串
if(s==null | | s . length()==0){ 0
返回0;
}
int ret=value map . get(s . charat(0));
for(int I=1;I s . length();I){ 0
int pre=value map . get(s . charat(I-1));
int cur=value map . get(s . charat(I));
if(pre cur){ 0
ret-=2 * pre;
}
ret=cur
}
返回ret
}
公共静态void main(String[]args){ 0
扫描仪输入=新扫描仪(系统输入);
while(in . HasNeXt()){ 0
system . out . println(RomanToint(in . next()));
}
}
}
心的方向,平底鞋过去的生活就像逆风的旅程,一片要扬帆的芦苇。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/130351.html