博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode打卡 | No.012 整数转罗马数字
阅读量:5993 次
发布时间:2019-06-20

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

No.12 整数转罗马数字

原题:

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符 数值

I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。

X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。

C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。

示例:

示例 1:

输入: 3

输出: "III"

示例 2:

输入: 4

输出: "IV"

示例 3:

输入: 9

输出: "IX"

示例 4:

输入: 1994

输出: "MCMXCIV"

解释: M = 1000, CM = 900, XC = 90, IV = 4.

分析:最为简单粗暴的方法,可以使用面向过程的思路,比如给定一个数,逐次从高到低进行转换。一大堆的if~这个思路很容易看懂,这里小詹不做过多解释,看代码!

class Solution(object):    def intToRoman(self, num):        """        :type num: int        :rtype: str        """        result = ''        #简单粗暴!从大到小依次处理,几个关键位置分别是:        #1000;900;500;400;100;90;50;40;10;9;5;4;1        while num > 0:            if num >= 1000:                result += 'M'                num -= 1000            elif num >= 900:                result += 'CM'                num -= 900            elif num >= 500:                result += 'D'                num -= 500            elif num >= 400:                result += 'CD'                num -= 400            elif num >= 100:                result += 'C'                num -= 100            elif num >= 90:                result += 'XC'                num -= 90            elif num >= 50:                result += 'L'                num -= 50            elif num >= 40:                result += 'XL'                num -= 40            elif num >= 10:                result += 'X'                num -= 10            elif num >= 9:                result += 'IX'                num -= 9            elif num >= 5:                result += 'V'                num -= 5            elif num >= 4:                result += 'IV'                num -= 4            elif num >= 1:                result += 'I'                num -= 1        return result

上边代码并不难懂,效果一般!这里已经注意到几个特殊的值,可以根据这些值做文章。下边提供一种网上的代码思路:通过构建字典和列表,从高位到低位依次进行转换输出。因为小詹把注释写的很详细,这里就不做赘述了!

image

原文发布时间为:2018-06-29

本文作者:小詹同学
本文来自云栖社区合作伙伴“ ”,了解相关信息可以关注“ ”

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

你可能感兴趣的文章
linux黄金命令[积累中]
查看>>
python 几种不同的格式化输出
查看>>
站立会议(三)
查看>>
MarkdownPad2基础语法
查看>>
mysql 8.0 ~ 存储和账户
查看>>
贪心 Codeforces Round #236 (Div. 2) A. Nuts
查看>>
特定场景下SQL的优化
查看>>
UrlPager免费分页控件2.0版发布!
查看>>
Django介绍&工程搭建
查看>>
解除svn控制下的文件夹的svn的控制
查看>>
P2051 中国象棋
查看>>
AsyncTask 实现异步处理任务
查看>>
sql
查看>>
Python-列表
查看>>
HDU5461 Largest Point 思维 2015沈阳icpc
查看>>
MySQL忘记root密码不重启mysqld的方法
查看>>
2014/12/05 随笔 2014-12-05 12:50 26人阅读 评论(0) 收藏...
查看>>
c#自杀程序的关键方法
查看>>
使用OpenGL一年后
查看>>
快速排序
查看>>