13. Roman to Integer
来源:互联网 发布:java实现三级联动 编辑:程序博客网 时间:2024/06/05 18:27
13. Roman to Integer
题目描述:Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.
题目大意:将罗马字符转化为数字。
思路:罗马数字转成阿拉伯数字,这里面需要知道罗马数字的构成规则。罗马数字通过7个不同字母的重复或组合,能够表示出所有正整数(罗马数字中没有0)。
- I = 1
- V = 5
- X = 10
- L = 50
- C = 100
- D = 500
- M = 1000
比如:IV表示4,VI表示6,XIX表示19,XXI表示21。
可以找到规律,如果左边的字母表示的数字小于右边的字母,则用右边的数字减去左边的数字;反之,则需要进行加法。
我们从左向右进行遍历的时候,不太好计算出最终值;从另一个角度考虑,就是从右向左计算,就可以看出来了。
好了,说到这里,就可以上代码了。
代码:
package String;/** * @Author OovEver * @Date 2017/12/5 20:18 */public class LeetCode13 { 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
- 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
- c++中int a[10]和int a=new int[10]]有什么区别
- Mysql集群和一主多从的方案实现(二)
- 深度学习:优化神经网络(1)
- 学习笔记3 时间复杂度和空间复杂度
- 后缀字串排序
- 13. Roman to Integer
- 答辩:类的继承
- LeetCode--Unique Binary Search Trees (不同二叉搜索树的个数)Python
- 集合框架
- ImagerLoader 的使用和配置 以及存储
- echarts
- git基础语句-vim的使用
- 数据结构与算法分析(算法分析部分)
- 创建登陆界面