LeetCode-13. Roman to Integer(罗马数字转阿拉伯数字)
来源:互联网 发布:时间安排手机软件 知乎 编辑:程序博客网 时间:2024/06/10 00:58
1.题目描述
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
2.我的分析思路
罗马数字转成阿拉伯数字,这里面需要知道罗马数字的构成规则。罗马数字通过7个不同字母的重复或组合,能够表示出所有正整数(罗马数字中没有0)。
- I = 1
- V = 5
- X = 10
- L = 50
- C = 100
- D = 500
- M = 1000
比如:IV表示4,VI表示6,XIX表示19,XXI表示21。
可以找到规律,如果左边的字母表示的数字小于右边的字母,则用右边的数字减去左边的数字;反之,则需要进行加法。
我们从左向右进行遍历的时候,不太好计算出最终值;从另一个角度考虑,就是从右向左计算,就可以看出来了。
好了,说到这里,就可以上代码了。
private static Map<Character, Integer> map = new HashMap() { { put('I', 1); put('V', 5); put('X', 10); put('L', 50); put('C', 100); put('D', 500); put('M', 1000); } }; public static int romanToInt(String s) { int length = s.length(); int result = 0; int preVal = 0; for (int i = length - 1; i >= 0; i--) { char key = s.charAt(i); int value = map.get(key); if (value >= preVal) { result += value; } else { result -= value; } preVal = value; } return result; }
3.其他的思路
找到一个比较容易理解的,分享给大家。
public int romanToInt(String s) { int nums[]=new int[s.length()]; for(int i=0;i<s.length();i++){ switch (s.charAt(i)){ case 'M': nums[i]=1000; break; case 'D': nums[i]=500; break; case 'C': nums[i]=100; break; case 'L': nums[i]=50; break; case 'X' : nums[i]=10; break; case 'V': nums[i]=5; break; case 'I': nums[i]=1; break; } } int sum=0; for(int i=0;i<nums.length-1;i++){ if(nums[i]<nums[i+1]) sum-=nums[i]; else sum+=nums[i]; } return sum+nums[nums.length-1];}
0 0
- Roman to Integer 罗马数字转阿拉伯数字@LeetCode
- Integer to Roman 阿拉伯数字转罗马数字@LeetCode
- LeetCode Roman to Integer 罗马数字转阿拉伯数字
- [LeetCode]-Integer to Roman 阿拉伯数字转罗马数字
- LeetCode 13. Roman to Integer(罗马数字转阿拉伯数字)
- LeetCode-13. Roman to Integer(罗马数字转阿拉伯数字)
- Leetcode#13. Roman to Integer (罗马数字转化阿拉伯数字)
- [LeetCode]—Roman to Integer 罗马数字转阿拉伯数字
- leetcode Roman to Integer罗马数字与阿拉伯数字互转
- Roman to Integer 罗马数字转阿拉伯数字
- Integer to Roman 阿拉伯数字转罗马数字
- [LeetCode-13] Roman to Integer(罗马数字转成阿拉伯数字)
- Leetcode#12. Roman to Integer (阿拉伯数字转化罗马数字)
- Leetcode刷题记——13. Roman to Integer(罗马数字转换阿拉伯数字)
- Leetcode刷题记——12. Integer to Roman(阿拉伯数字转罗马数字)
- Roman to Integer:转换罗马数字到阿拉伯数字
- [LeetCode]Integer to Roman整数转罗马数字
- (LeetCode) Roman to Integer --- 罗马数字转整数
- Island Perimeter
- 按钮点击事件外部类
- U3D继承及射线使用练习
- 使用java,tomcat,mysql实现登录功能
- Linux网络编程:使用select函数实现socket 收发数据
- LeetCode-13. Roman to Integer(罗马数字转阿拉伯数字)
- Java Nashorn--Part 2
- 完全二叉树的结点总数问题
- Git版本控制(2)
- Windows7 上运行docker实战
- noi-7543-统计满足条件的4位数个数
- 异步操作校验工具awaitility快速入门
- 关于C++中const关键字总结
- 【Java SE】异常处理