leetcode-013-Roman to Integer
来源:互联网 发布:数据库事务特性 编辑:程序博客网 时间:2024/06/05 04:23
- P013 Roman to Integer
- 思路分析
- 代码
- java
P013 Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
思路分析
罗马数字的元数字如下:
几个规律:
- 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
- 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
- 小的数字、(限于 Ⅰ、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
- 正常使用时、连写的数字重复不得超过三次;
思路
- 从左往右扫描输入字符串
- 找到对应的字母对应的数字相加即可
- 有以上几个规律限制
- 当前处理的字符对应的数字比前一个小,正常相加即可。
- 当前处理的字符对应的数字比前一个大,加上当前数,在减去前一个数的2倍
VI==>5+1==6VII==>5+1+1==7IV==>1+5-2==4
代码
java
public class Solution013 { public static int[] base = new int['X' + 1]; static { for (int i = 0; i < base.length; i++) base[i] = 0; base['I'] = 1; base['V'] = 5; base['X'] = 10; base['L'] = 50; base['C'] = 100; base['D'] = 500; base['M'] = 1000; } public int romanToInt(String s) { if (s == null || s.trim().length() == 0) return 0; int ret = base[s.charAt(0)]; for (int i = 1; i < s.toCharArray().length; i++) { int current = base[s.charAt(i)]; int prev = base[s.charAt(i - 1)]; if (prev >= current) ret += current; else ret += current - 2 * prev; } return ret; } public static void main(String[] args) { Solution013 s13 = new Solution013(); String ss[] = { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X" }; for (String s : ss) { System.out.println(s + "--->" + s13.romanToInt(s)); } }}
0 0
- LeetCode 013 Roman to Integer
- [LeetCode]013-Roman to Integer
- LeetCode 013 Roman to Integer
- leetcode-013-Roman to Integer
- LeetCode 013 Roman to Integer
- LeetCode-013 Roman to Integer
- LeetCode Roman to Integer && Integer to Roman
- 【leetcode】Roman to Integer | Integer to Roman
- Leetcode - "Roman to Integer" & "Integer to Roman"
- LeetCode:Roman to Integer,Integer to Roman
- LeetCode Integer to Roman & Roman to Integer
- leetcode - roman to integer & integer to roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- LeetCode Integer to Roman
- LeetCode: Integer to Roman
- LeetCode : Roman to Integer
- Vim
- 10.03
- 设计模式(一)
- 框架入门 中级篇 (中)twig模板引擎
- 51nod 1183 编辑距离
- leetcode-013-Roman to Integer
- 长恨歌(白居易)
- 下班后的1小时, 会影响到你的工作和生活
- CUDA学习--内存处理之全局内存(5)
- Avalon,继Angular之后
- ContentProvider简单使用 -- Android学习之路
- python挑战之level 30
- Linux服务
- poj 3211 Washing Clothes(分组01背包)