Easy-题目13:13. Roman to Integer
2016-05-30 19:55
621 查看
题目原文:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
题目大意:
把1-3999之内的罗马数字转换为整数。
题目分析:
先用HashMap记录数字与字母的映射关系,再根据罗马数字的换算法则逐位进行转换。遇到40,4等前面数比后面数小的情况时,要将两位看做一个整体进行换算。
源码:(language:java)
成绩:
18ms,beats24.69% 众数7ms,15.29%
Cmershen的碎碎念:
1. 此题成绩很差,可能是HashMap的效率过低造成的,但总体的时间复杂度为O(n)。当然可以暴力穷举,用switch + 3999个case语句完成此题。(这个时间复杂度显然为O(1)但谁会那么无聊呢?)
2. 罗马数字计算方法(摘自百度百科):
(1) 七个基本符号:I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、 M(1000)
(2) 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
(3) 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;
(4) 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
(5) 在一个数的上面画一条横线,表示这个数增值 1,000 倍,如=5000。
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
题目大意:
把1-3999之内的罗马数字转换为整数。
题目分析:
先用HashMap记录数字与字母的映射关系,再根据罗马数字的换算法则逐位进行转换。遇到40,4等前面数比后面数小的情况时,要将两位看做一个整体进行换算。
源码:(language:java)
public class Solution { public int romanToInt(String s) { int num=0; HashMap<Character,Integer> convert=new HashMap<Character,Integer>(); convert.put('I', 1); convert.put('V', 5); convert.put('X', 10); convert.put('L', 50); convert.put('C', 100); convert.put('D', 500); convert.put('M', 1000); for(int i=0;i<s.length();i++) { int num1=convert.get(s.charAt(i)); int num2=0; if(i!=s.length()-1) num2=convert.get(s.charAt(i+1)); if(num1>=num2) num+=num1; else { num+=(num2-num1); i++; } } return num; } }
成绩:
18ms,beats24.69% 众数7ms,15.29%
Cmershen的碎碎念:
1. 此题成绩很差,可能是HashMap的效率过低造成的,但总体的时间复杂度为O(n)。当然可以暴力穷举,用switch + 3999个case语句完成此题。(这个时间复杂度显然为O(1)但谁会那么无聊呢?)
2. 罗马数字计算方法(摘自百度百科):
(1) 七个基本符号:I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、 M(1000)
(2) 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
(3) 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;
(4) 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
(5) 在一个数的上面画一条横线,表示这个数增值 1,000 倍,如=5000。
相关文章推荐
- CodeForces 653 A. Bear and Three Balls(数学 ,快排)
- 第二次冲刺个人工作总结06
- Light OJ 1064 - Throwing Dice
- web.xml中classpath和classpath*的区别
- Easy-题目12:206. Reverse Linked List
- (SRCNN)Image super-resolution using deep convolutional networks
- [bzoj1458]士兵占领
- Easy-题目11:169. Majority Element
- Activity生命周期总结
- 多线程的同步控制
- 软件工程(二十四)
- Mysql 时间格式默认空串 '0000-00-00 00:00:00' select抛出异常的解决方法
- 自定义spark udf计算单词的长度
- 信息论小结
- Easy-题目10:217. Contains Duplicate
- 优酷视频解析(16.5.30更新)Java代码版本
- Mybatis 入门之resultMap与resultType讲解实例
- Easy-题目9:171. Excel Sheet Column Number
- service全面解析(一)
- java5.30学习笔记