您的位置:首页 > 其它

12. Integer to Roman

2017-10-18 19:57 260 查看

12. Integer to Roman

题目



题目的意思很简单:将整数转为罗马数字表示。

解题思路

1、首先,先介绍一下罗马数字的7个基本单元“I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、M(1000)”。

2、接着让我们看一下数字转罗马数字的一些规则:

1)相同数字连写不超过3次。

2)小的数字在大的数字的左边时,表示大数减小数。但是小的数字仅限于I、X、C三个。所以除了上面7种还有的补充单元包括:IV(4)、IX(9)、XL(40)、XM(90)、CD(400)、CM(900)。

3)相减时不能跨两位相减。比如99不能够写成IC(100-1),而应该写成XCIX(100-10+(10-1))。

4)相加时,大数在小数的左边。

3、根据上述规则,解题的思路如下:

1)构建两个数组:roNum存放{“I”,”IV”,”V”,”IX”,”X”,”XL”,”L”,”XC”,”C”,”CD”,”D”,”CM”,”M”};inNum存放{1,4,5,9,10,40,50,90,100,400,500,900,1000}。

2)将数字依次与inNum中的数字进行比较,注意是从inNum中从后往前进行比较。如果大于当前索引位置的值,则保存当前索引位置对应的罗马数字。比如520,那么先将D存下来。

3)将原数字更新值为减去刚存的罗马数字的值,即520-500=20。继续往下比较。直到将inNum的全部数字遍历完毕。返回存储的罗马字符串。

代码

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: