博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codewars第八天--Roman Numerals Encoder
阅读量:4302 次
发布时间:2019-05-27

本文共 1242 字,大约阅读时间需要 4 分钟。

Codewars第八天–Roman Numerals Encoder

题目描述:

给定一个数字n ,返回该数字对应的罗马数字。
在罗马技术中 1990 : 1000=M, 900=CM, 90=XC; 结果为: MCMXC. 2008 可以被写作: 2000=MM, 8=VIII; 结果为: MMVIII. 1666 被描述为: MDCLXVI。但是相同的罗马字不能够超过三个,比如9 不能够写为VIIII ,而只能写作IX
数字对应的罗马数字为:

Symbol    ValueI          1V          5X          10L          50C          100D          500M          1,000

在做这道题时,开始的思路是找到输入n 相应的每一位的数字,然后从高位到低位返回相应的值,这样直接写的话,会进行过多判断,代码庞大。因此可以通过设置较多限制的字典来返回相应的罗马数。在这里,对于数字4 9 可以当做新的关键点来对数字进行归类。n 中含有9 的数字同 86 的数字有所不同。4 也是如此,他们需要特殊的罗马字来表示,使其最后的结中果没有超过3个重复的罗马字。代码如下:先对字典中的key 进行从大到小排序,让n 同字典中的key 的最大值1000 开始进行比较来判断其最高位的值,然后通过减去每一位上的值来得到低位的值,再次进行相应的判断。这样就可以得到最后的结果。

def solution(n):    roman_numerals = {
1000:'M', 900: 'CM', 500: 'D', 400: 'CD', 100: 'C', 90: 'XC', 50: 'L', 40: 'XL', 10: 'X', 9: 'IX', 5: 'V', 4: 'IV', 1: 'I' } roman_string = '' for key in sorted(roman_numerals.keys(),reverse=True): while n >= key: roman_string += roman_numerals[key] n -= key return roman_string

转载地址:http://wqmws.baihongyu.com/

你可能感兴趣的文章
常浏览的博客和网站
查看>>
Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
查看>>
iOS在Xcode6中怎么创建OC category文件
查看>>
5、JavaWeb学习之基础篇—标签(自定义&JSTL)
查看>>
8、JavaWEB学习之基础篇—文件上传&下载
查看>>
reRender属性的使用
查看>>
href="javascript:void(0)"
查看>>
h:panelGrid、h:panelGroup标签学习
查看>>
f:facet标签 的用法
查看>>
<h:panelgroup>相当于span元素
查看>>
java中append()的方法
查看>>
必学高级SQL语句
查看>>
经典SQL语句大全
查看>>
Eclipse快捷键 10个最有用的快捷键
查看>>
log日志记录是什么
查看>>
<rich:modelPanel>标签的使用
查看>>
<h:commandLink>和<h:inputLink>的区别
查看>>
<a4j:keeyAlive>的英文介绍
查看>>
关于list对象的转化问题
查看>>
VOPO对象介绍
查看>>