13. Roman to Integer
来源:互联网 发布:淘宝模特小兮 编辑:程序博客网 时间:2024/04/30 10:52
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
hint
1~9: {“I”, “II”, “III”, “IV”, “V”, “VI”, “VII”, “VIII”, “IX”};
10~90: {“X”, “XX”, “XXX”, “XL”, “L”, “LX”, “LXX”, “LXXX”, “XC”};
100~900: {“C”, “CC”, “CCC”, “CD”, “D”, “DC”, “DCC”, “DCCC”, “CM”};
1000~3000: {“M”, “MM”, “MMM”}.
罗马数字规则:
- 罗马数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。
罗马数字中没有“0”。 - 重复次数:一个罗马数字最多重复3次。
- 右加左减
在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。
在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字。 - 左减的数字有限制,仅限于I、X、C,且放在大数的左边只能用一个。
(*) V 和 X 左边的小数字只能用Ⅰ。
(*) L 和 C 左边的小数字只能用X。
(*) D 和 M 左 边的小数字只能用C。
code
public class Solution { public static int romanToInt(String s) { int ret = toNumber(s.charAt(0)); for (int i = 1; i < s.length(); i++) { if (toNumber(s.charAt(i - 1)) < toNumber(s.charAt(i))) { ret += toNumber(s.charAt(i)) - 2 * toNumber(s.charAt(i - 1)); } else { ret += toNumber(s.charAt(i)); } } return ret; } public static int toNumber(char ch) { switch (ch) { case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; } return 0; }}
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
- 计时器NSTimer
- MyEclipse优化技巧
- Oscar的狗丢失在丛林中(条件与独立性概率习题)
- SSH密钥认证配置
- eclipse怎样修改包(package)的显示样式、格式 工具/原料
- 13. Roman to Integer
- spi驱动流程学习
- zzulioj--1730--通信基站(全排列+dfs)(好题)
- MVC应用:简易版的应用管理
- linux查看系统情况
- JAVA中Long与Integer比较容易犯的错误
- js处理img标签加载图片失败,显示默认图片
- linux centos系统下安装rsync
- intercept-url配置