当前位置:网站首页>leetcode 13. 罗马数字转整数
leetcode 13. 罗马数字转整数
2022-08-04 17:40: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:
输入: s = “III”
输出: 3
示例2:
输入: s = “IV”
输出: 4
示例3:
输入: s = “IX”
输出: 9
示例4:
输入: s = “LVIII”
输出: 58
解释: L = 50, V= 5, III = 3.
示例5:
输入: s = “MCMXCIV”
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
🧡 算法分析
此题是和前一题互逆, leetcode 12. 整数转罗马数字
方法步骤:
- 先用哈希表存储字符代表的数值
- 遍历一遍字符串即可
- 遇到前面字符表示的数值小于 后面字符表示的数值, 就是减去这个前面字符表示的数值
- 其他情况就是直接加上字符表示的数值
代码实现
class Solution {
public:
int romanToInt(string s) {
/// 直接根据字母算数字的大小,然后除了4和9, 左边的比右边的字母小,这样的字母在左边就需要减去它
unordered_map<char, int> hash;
hash['I'] = 1, hash['V'] = 5;
hash['X'] = 10, hash['L'] = 50;
hash['C'] = 100, hash['D'] = 500;
hash['M'] = 1000;
int re = 0;
for(int i = 0; i< s.size(); i++)
{
// 只需判断前面一个字符 < 后面一个字符, 就是减去, 其他情况就是加上
if(i + 1 < s.size() && hash[s[i]] < hash[s[i + 1]])
re -= hash[s[i]];
else
re += hash[s[i]];
}
return re;
}
};
执行结果:
时间复杂度分析
其中遍历一次, 时间复杂度为O(n)
如果觉得对你有帮助的话:
点赞,你的认可是我创作的动力!
🧡 收藏,你的青睐是我努力的方向!
️ 评论,你的意见是我进步的财富!
边栏推荐
- 公司自用的国产API管理神器
- Clearance sword refers to Offer——The sword refers to Offer II 010. and the sub-array of k
- 对象实例化之后一定会存放在堆内存中?
- 我的大一.
- hi, 请问下这是什么问题, 我看官网的example就是mysql的, 咋提示不支持?
- 《中国综合算力指数》《中国算力白皮书》《中国存力白皮书》《中国运力白皮书》在首届算力大会上重磅发出
- 88.(cesium之家)cesium聚合图
- R语言ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、使用ggarrange函数将表格数据和可视化图像组合起来(表格数据在可视化图像下方)
- clickhouse online and offline table
- 化学制品制造业数智化供应链管理系统:打造智慧供应体系,赋能企业产效提升
猜你喜欢
随机推荐
【技术笔记】let 和 var和const的异同
启动项目(瑞吉外卖)
《机器学习理论到应用》电子书免费下载
学习探索-网站中引入百度统计
下一代 AutoAI:从模型为中心,到数据为中心
Fork/Join框架
树莓派温度监视关机保护脚本
php如何查询字符串以什么开头
Nacos集群搭建
What does the product system of a digital financial enterprise look like?
Codeforces Round #811 (Div. 3)
在VMD上可视化hdf5格式的分子轨迹文件
PT100铂热电阻三种测温方法介绍
企业调查相关性分析案例
Digital-intelligent supply chain management system for chemical manufacturing industry: build a smart supply system and empower enterprises to improve production efficiency
西西成语接龙小助手
How to make JS code unbreakable
WPF 光标初始化的时候 temp 文件夹满了无法创建
基于大学生内卷行为的调查研究
About the two architectures of ETL (ETL architecture and ELT architecture)