标签:style blog http color java strong io for
题目:
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
题解:
这道题。。还有哪个roman to integer。。第一件事 就是先把roman认全吧。。
罗马数字拼写规则(转自Wikipedia:http://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97):
羅馬數字共有7個,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。按照下述的規則可以表示任意正整數。需要注意的是罗马数字中没有“0”,與進位制無關。一般認為羅馬數字只用來記數,而不作演算。
根据上述规则,我们可以发现两条对解这道题有帮助的内容:
有以上三个内容我们可以发现在减数的时候有特定的规律,就是只能减1位且不能跨越一个位数,同时只限于I X C。
像上面那个例子,99 不能用IC(100-1)表示,是因为如果一个数字超过90(或等于90),其罗马数字的表示就必须包含一个XC(100-10)。
同理,对I X C都适用这个原则。
这个判断,要从最大往下找,如果一个数字是5,那么他就是属于大于等于5,罗马数字包含V,而无需写成IIIII。
所以,递归的,代码可以写成如下(代码源自leetcode discussion):
非递归的写法如下,道理一样:
Reference:http://blog.csdn.net/havenoidea/article/details/11848921
Integer to Roman leetcode java,布布扣,bubuko.com
Integer to Roman leetcode java
标签:style blog http color java strong io for
原文地址:http://www.cnblogs.com/springfor/p/3886459.html