[leetcode]13. Roman to Integer
来源:互联网 发布:淘宝加购什么意思 编辑:程序博客网 时间:2024/06/05 19:02
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
这道题和12题正好相反,但是要比12题难一点。最重要的还是要熟悉对应表。
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"}.
我们可以发现所有这些罗马数字出现的字符有:I,V,X,L,C,D,M在满5和满9的时候回变化。除了满5和满9的位置,其他的罗马数字都是构成的几个字符的值相加之和,而满5满9的罗马数字则是两个字符构成,其整数值这两个字符代表的整数相加之和减去第一个字符对应整数值的两倍。另一个问题就是怎么知道是满5满9,通过找规律可以发现,每当满5满9时,两个字符总是后一个大于前一个。
java代码
public class Solution { // 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"}. public int romanToInt(String s) { int result = getNumber(s.charAt(0)); for(int i=1;i<s.length();i++){ if(getNumber(s.charAt(i))>getNumber(s.charAt(i-1))){ result += getNumber(s.charAt(i))-2 * getNumber(s.charAt(i - 1)); }else{ result += getNumber(s.charAt(i)); } } return result; } public int getNumber(char c){ if (c=='I'){ return 1; }else if(c == 'V'){ return 5; }else if(c == 'X'){ return 10; }else if(c == 'L'){ return 50; }else if(c == 'C'){ return 100; }else if(c == 'D'){ return 500; }else{ return 1000; } }}
go代码
func romanToInt(s string) int { var result int = getNumber(s[0:1]); var i int = 1 for ;i<len(s);i++{ if getNumber(s[i:i+1]) > getNumber(s[i-1:i]){ result += getNumber(s[i:i+1]) - 2*getNumber(s[i-1:i]); }else{ result += getNumber(s[i:i+1]); } } return result;}func getNumber(c string)int{ if c=="I"{ return 1; }else if c == "V"{ return 5; }else if c == "X"{ return 10; }else if c == "L"{ return 50; }else if c == "C"{ return 100; }else if c == "D"{ return 500; }else{ return 1000; } }
0 0
- LeetCode 13. Roman to Integer
- [LeetCode]13.Roman to Integer
- LeetCode --- 13. Roman to Integer
- [Leetcode] 13. Roman to Integer
- [leetcode] 13.Roman to Integer
- leetcode 13. Roman to Integer
- leetcode 13. Roman to Integer
- LeetCode 13. Roman to Integer
- [LeetCode]13. Roman to Integer
- Leetcode 13. Roman to Integer
- leetcode 13. Roman to Integer
- leetcode 13. Roman to Integer
- LeetCode *** 13. Roman to Integer
- LeetCode 13. Roman to Integer
- LeetCode 13. Roman to Integer
- 【LeetCode】13. Roman to Integer
- Leetcode 13. Roman to Integer
- LeetCode 13. Roman to Integer
- oracle ORA-32701 hang分析(一)
- mac 解决mysql 乱码问题
- I2S概述
- javaScript基础知识点总结
- Linux之文件压缩gzip,bzip,tar等
- [leetcode]13. Roman to Integer
- 【Linux】root密码忘记终极解决方法
- [转]触发器-锁存器-亚稳态
- archlinux内核开发
- Android知识总结
- 总结
- C ++友元的浅析(一)
- Result结果视图的常用类型
- 近20个绚丽实用的jQuery/CSS3侧边栏菜单