13. Roman to Integer
来源:互联网 发布:阿里巴巴农村淘宝图片 编辑:程序博客网 时间:2024/05/21 06:19
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
罗马数字转阿拉伯数字:罗马数字中的 I V X L C D M分别对应阿拉伯数字的1,5,10,50,100,500,1000
规则:(1)左边数字比右边数字小=右边数字-左边数字 如IV=5-1=4
(2)右边数字比左边数字大=左边数字+右边数字 如VI=5+1=6 ;最多三个I X C相连,如III=3’
(3) V 和 X 左边的小数字只能用 Ⅰ。
(4)L 和 C 左边的小数字只能用 ×。
(5)D 和 M 左 边的小数字只能用 C 。
后三点可以不用即,总结规则:如果当右边数字<=左边数字的时候就把数字的值加上,
如果右边数字>左边的,比如ix,要把i减去,但因为在此之前你已经加过一次i了,所以这里要减去两个i.
借助map来解决问题
public int romanToInt(String s) { HashMap<Character,Integer> map=new HashMap(); map.put('I', 1);//i v x l c d m map.put('V', 5); map.put('X', 10); map.put('L', 50); map.put('C', 100); map.put('D',500); map.put('M', 1000); int value=map.get(s.charAt(0));//字母对应的数值 for(int i=1;i<s.length();i++){ if(map.get(s.charAt(i))>map.get(s.charAt(i-1))){//右边数字比左边的大比如IV value=value+map.get(s.charAt(i))-2*map.get(s.charAt(i-1)); }else{ value=value+map.get(s.charAt(i)); //如果右边数字<=左边数字,先加上,等下在右边的数字更大时,同时减去两个就可以 } } System.out.println(value); return value; }
0 0
- 13. Roman to Integer
- 13.Roman to Integer
- 13. Roman to Integer
- 13.Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 点击按钮Alert弹出遮罩层效果的提示框代码
- 后缀数组自学
- 建立自己的站点
- servlet/filter/listener/interceptor区别与联系
- Php代码耗时查询
- 13. Roman to Integer
- JavaScript中闭包的使用
- 名词解释
- Android热修复-微信Tinker
- 一次一体机无法开机的解决过程
- Node.js调用ffmpeg处理视频
- JAVA工具收集
- ftp
- Android studio2.3更新后出问题