LeetCode Roman to Integer
2016-02-21 09:01
393 查看
题目
Convert a non-negative integer to its english words representation. Given input is guaranteed to
be less than 231 - 1.
For example,
123 -> “One Hundred Twenty Three”
12345 -> “Twelve Thousand Three Hundred Forty Five”
1234567 -> “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”
首先要来了解一下罗马数字表示法,基本字符有7个:I,V,X,L,C,D,M,分别表示1,5,10,50,
100,500,1000。
在构成数字的时候,有下列规则:
1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
4、正常使用时,连写的数字重复不得超过三次。
通过建立一个Map,存储罗马数字对应的整数么,然后去查找当前罗马数字对应的整数a与右边的罗马
数字所对应的整数b进行比较,如果a>=b,则相加,否则相减。代码如下:
Convert a non-negative integer to its english words representation. Given input is guaranteed to
be less than 231 - 1.
For example,
123 -> “One Hundred Twenty Three”
12345 -> “Twelve Thousand Three Hundred Forty Five”
1234567 -> “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”
首先要来了解一下罗马数字表示法,基本字符有7个:I,V,X,L,C,D,M,分别表示1,5,10,50,
100,500,1000。
在构成数字的时候,有下列规则:
1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
4、正常使用时,连写的数字重复不得超过三次。
通过建立一个Map,存储罗马数字对应的整数么,然后去查找当前罗马数字对应的整数a与右边的罗马
数字所对应的整数b进行比较,如果a>=b,则相加,否则相减。代码如下:
相关文章推荐
- jqMobi(App Framework)入门学习(一)
- codeforces 629D. Babaei and Birthday Cake
- bit-map牛刀小试:数组test[X]的值所有在区间[1, 8000]中, 现要输出test中反复的数。要求:1. 不能改变原数组; 2.时间复杂度为O(X);3.除test外空间不超过1KB
- 全面详细的jQuery常见开发技巧手册
- Hive Operators and User-Defined Functions (UDFs)
- php课程---建立一个简单的下拉列表框
- Android 开源项目android-open-project解析之(三) ScrollView,TimeView,TipView,FlipView
- php课程---初学练习
- 完善的jquery处理机制
- php课程---JavaScript改变HTML中的元素
- html5 isPointInPath相关操作
- 从头開始写项目Makefile(七):统一目标输出文件夹
- 使用工具来提升Android开发效率
- [LeetCode 329] Longest Increasing Path in a Matrix
- Android读取assets中的文件
- php课程---Windows.open()方法参数详解
- jquery对象和DOM对象的任意相互转换
- 关于单反的那点事
- 欢迎使用CSDN-markdown编辑器
- 程序猿菜鸟必备——作为独立开发人员怎样系统的学习编程