当前位置:网站首页>leetcode 12. 整数转罗马数字
leetcode 12. 整数转罗马数字
2022-08-04 04:37:00 【_刘小雨】
作者简介:C/C++ 、Golang 领域耕耘者,创作者
个人主页:作者主页
活动地址:CSDN21天学习挑战赛
题目来源: leetcode官网
如果感觉博主的文章还不错的话,还请关注 、点赞 、收藏🧡三连支持一下博主哦~~~
题目描述
罗马数字包含以下七种字符: 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:
输入: num = 3
输出: “III”
示例2:
输入: num = 4
输出: “IV”
示例3:
输入: num = 9
输出: “IX”
示例4:
输入: num = 58
输出: “LVIII”
解释: L = 50, V = 5, III = 3.
示例5:
输入: num = 1994
输出: “MCMXCIV”
解释: M = 1000, CM = 900, XC = 90, IV = 4.
🧡 算法分析
此题是模拟题
首先是基本的罗马数字统计(下图中的上方表格)
我们可以得到一些规律,
- 相同的数字连写,所表示的数等于这些数字相加得到的数,如:III=3;
- 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如:VIII=8, XII=12;
- 小的数字在大的数字的左边(限于 IV、IX、XL、XC、CD和CM),所表示的数等于大数减小数得到的数,如:IV=4, IX=9;
- 正常使用时,连写的数字重复不得超过三次;
所以我们可以用新的组合字符代表新的单位, 上图中的下方表格
模拟实现步骤:
- 先整理出来新的单位和数值数组
- 直接对需要转化的数字进行循环遍历即可(开始优先选择较大的单位)
代码实现
class Solution {
public:
string intToRoman(int num) {
// 属于模拟题
int vals[] = {
1000,
900,500,400,100,
90,50,40,10,
9,5,4,1
};
string reps[] = {
"M",
"CM", "D", "CD", "C",
"XC", "L", "XL", "X",
"IX", "V", "IV", "I"
};
string re;
// 先选择大单位
for(int i = 0; i < 13; i++) // 因为上面数组里面有13个数
{
while(num >= vals[i])
{
num -= vals[i];
re += reps[i];
}
}
return re;
}
};
执行结果:
时间复杂度分析
计算量与最终罗马数字的长度成正比,对于每一位阿拉伯数字,罗马数字最多用4个字母表示(比如VIII=8),所以罗马数字的长度和阿拉伯数字的长度是一个数量级的,而阿拉伯数字的长度与位数成正比,是 O(logn)
,因此时间复杂度是 O(logn)
如果觉得对你有帮助的话:
点赞,你的认可是我创作的动力!
🧡 收藏,你的青睐是我努力的方向!
️ 评论,你的意见是我进步的财富!
边栏推荐
- There is an 8 hour difference between the docker installation of mysql and the host.
- Use serve to build a local server
- Simple operation of the file system
- 八年软件测试工程师带你了解-测试岗进阶之路
- sql语句查询String类型字段小于10的怎么查
- 【21 Days Learning Challenge】Direct Insertion Sort
- Introduction to the memory model of the JVM
- Deep learning -- CNN clothing image classification, for example, discussed how to evaluate neural network model
- 数组相关 内容 解析
- 【Ryerson情感说话/歌唱视听数据集(RAVDESS) 】
猜你喜欢
Converts XML tags to TXT format (voc conversion for yolo convenient training)
文件系统的简单操作
机器学习模型的“可解释性”
ADC噪声全面分析 -03- 利用噪声分析进行实际设计
系统设计.如何设计一个秒杀系统(完整版 转)
Learn iframes and use them to solve cross-domain problems
7-3 LVS+Keepalived Cluster Description and Deployment
JVM Notes
This Thursday evening at 19:00, the fourth live broadcast of knowledge empowerment丨The realization of equipment control of OpenHarmony smart home project
2022 Hangzhou Electric Power Multi-School League Game 5 Solution
随机推荐
Embedded database development programming MySQL (full)
Oracle与Postgresql在PLSQL内事务回滚的重大差异
Converts XML tags to TXT format (voc conversion for yolo convenient training)
SVM介绍以及实战
7-3 LVS+Keepalived Cluster Description and Deployment
This Thursday evening at 19:00, the fourth live broadcast of knowledge empowerment丨The realization of equipment control of OpenHarmony smart home project
备份工具pg_dump的使用《postgres》
A Preliminary Study of RSS Subscription to WeChat Official Account-feed43
There is an 8 hour difference between the docker installation of mysql and the host.
Stop behind.
How to keep the source code confidential in the development under the burning scenario
FFmpeg —— 通过修改yuv,将视频转为黑白并输出(附源码)
【21天学习挑战赛】图像的旋转问题(二维数组)
21 days learning challenge 】 【 sequential search
中信证券网上开户怎么开的?安全吗?
复现20字符短域名绕过
Take care of JVM performance optimization (own note version)
Postgresql source code (66) insert on conflict grammar introduction and kernel execution process analysis
Introduction to mq application scenarios
【源码】使用深度学习训练一个游戏