[leetcode 12] Inter to Roman
2015-06-10 18:47
323 查看
1 题目:
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
Hide Tags
Math String
2 思路:
经过我仔细研读维基百科的说明https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97,我发现规则好复杂,如下:
重复数次:一个罗马数字重复几次,就表示这个数的几倍。
右加左减:
在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。
在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字。
左减的数字有限制,仅限于I、X、C。比如45不可以写成VL,只能是XLV
但是,左减时不可跨越一个位数。比如,99不可以用IC(
)表示,而是用XCIX(
)表示。(等同于阿拉伯数字每位数字分别表示。)
左减数字必须为一位,比如8写成VIII,而非IIX。
右加数字不可连续超过三位,比如14写成XIV,而非XIIII。(见下方“数码限制”一项。)
加线乘千:
在罗马数字的上方加上一条横线或者加上下标的Ⅿ,表示将这个数乘以1000,即是原数的1000倍。
同理,如果上方有两条横线,即是原数的1000000(
)倍。
数码限制:
同一数码最多只能出现三次,如40不可表示为XXXX,而要表示为XL。
例外:由于IV是古罗马神话主神朱庇特(即IVPITER,古罗马字母里没有J和U)的首字,因此有时用IIII代替IV。
想了想用if-else确定范围太难了。好吧,结果我看别人的答案,可以直接按位来确定罗马数字。(维基百科也没说可以这样转换。。)
https://leetcode.com/discuss/32626/simple-solution
3 代码:
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
Hide Tags
Math String
2 思路:
经过我仔细研读维基百科的说明https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97,我发现规则好复杂,如下:
重复数次:一个罗马数字重复几次,就表示这个数的几倍。
右加左减:
在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。
在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字。
左减的数字有限制,仅限于I、X、C。比如45不可以写成VL,只能是XLV
但是,左减时不可跨越一个位数。比如,99不可以用IC(
)表示,而是用XCIX(
)表示。(等同于阿拉伯数字每位数字分别表示。)
左减数字必须为一位,比如8写成VIII,而非IIX。
右加数字不可连续超过三位,比如14写成XIV,而非XIIII。(见下方“数码限制”一项。)
加线乘千:
在罗马数字的上方加上一条横线或者加上下标的Ⅿ,表示将这个数乘以1000,即是原数的1000倍。
同理,如果上方有两条横线,即是原数的1000000(
)倍。
数码限制:
同一数码最多只能出现三次,如40不可表示为XXXX,而要表示为XL。
例外:由于IV是古罗马神话主神朱庇特(即IVPITER,古罗马字母里没有J和U)的首字,因此有时用IIII代替IV。
想了想用if-else确定范围太难了。好吧,结果我看别人的答案,可以直接按位来确定罗马数字。(维基百科也没说可以这样转换。。)
https://leetcode.com/discuss/32626/simple-solution
3 代码:
public String intToRoman(int num) { String[] M = {"","M","MM","MMM"}; String[] C = {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"}; String[] X = {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"}; String[] V = {"","I","II","III","IV","V","VI","VII","VIII","IX"}; return M[num/1000] + C[(num%1000)/100] + X[(num%100)/10] + V[num%10]; }
相关文章推荐
- LCA 最裸版
- IOCP本质论
- 导出Excel插件——Export-CSV ---20150610
- 黑马程序员——基础篇——IO(关于hasNextDouble()的使用心得
- 鱼眼拼接之Harris检测特征点
- 毕业课题之------------图像路面直方图建模
- 6.10 UITableView
- How to install libipfix
- 七零后的程序员,人已老,代码亦封存
- Eclipse中jsp、js文件编辑时,卡死现象解决汇总
- 关于<:if>没有<c:else> 可以用<c:choose>来取代结构:
- PHP:编译-执行 分离
- asp.net 使用Oracle数据库
- 黑马程序员_JAVA_基础_1
- leetcode--Binary Tree Inorder Traversal
- linux 校验工具
- auto_ptr的使用原则
- 黑马程序员——基础篇——java中变量的作用域
- UGUI - 关于ScrollContent 和 Grid使用
- HDOJMoving table