leetcode 13 13. 罗马数字转整数 (python)
题目描述
罗马数字包含以下七种字符: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:
输入: "III" 输出: 3
示例 2:
输入: "IV" 输出: 4
示例 3:
输入: "IX" 输出: 9
示例 4:
输入: "LVIII" 输出: 58 解释: C = 100, L = 50, XXX = 30, III = 3.
示例 5:
输入: "MCMXCIV" 输出: 1994 解释: M = 1000, CM = 900, XC = 90, IV = 4.
题目解法
1.根据罗马数字的表示方法,应该想到用字典来存罗马数字
2.正常的数字直接逆序然后相加就好了,难点在于处理不正常的那几种情况
class Solution:def romanToInt(self, s):""":type s: str:rtype: int"""dic={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}high=0 #标记目前遇到的字典中最大的罗马数字answer=0 #最终的答案 for c in s[::-1]: #以反转的顺序来遍历字典if dic[c]>=high: #遍历的罗马值<=最大罗马值就相加。answer+=dic[c] high=dic[c] #替换当前遇到的最大值else:answer-=dic[c] return answer
leetcode 13 13. 罗马数字转整数 (python)相关推荐
- LeetCode:第13题 罗马数字转整数 python语言实现 2020.2.3
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L ...
- LeetCode高频题13:罗马数字转整数
LeetCode高频题13:罗马数字转整数 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批ACM ...
- leetcode学习记录-罗马数字转整数
题目 13.罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, ...
- 20190913:(leetcode习题)罗马数字转整数
罗马数字转整数 题目 大致思路 代码实现 题目 大致思路 跟上题一样,不需要思路,直接把各种情况列出来即可. 代码实现 package com.immunize.leetcode.romanTOINT ...
- Leetcode 简单四 罗马数字转整数
罗马数字转整数: PHP 76ms: 核心思想为哈希表操作.PHP的具体表现为关联数组.把基本数据和6大特殊数据类型何其对应的数据设为关联数组,判断是否存在并累加即可.时间复杂度O(n),空间复杂度为 ...
- LeetCode题组:第13题-罗马数字转整数
1.题目:回文数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做I ...
- LeetCode(13)——罗马数字转整数(JavaScript)
罗马数字包含以下七种字符:I,V, X, L,C,D 和M. 字符-------数值 I--------------1 V-------------5 X------------10 L------- ...
- 力扣13题---罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...
- 刻意练习:LeetCode实战 -- Task13. 罗马数字转整数
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...
- 罗马数字转整数Python解法
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L ...
最新文章
- ContentResolver.query()—buildQueryString()
- リストに項番をつける
- USB2.0 设备类代码表
- c++中声明和定义的区别(这个兄弟写的解决了我的疑惑)
- vue组件的实例使用
- 小程序 - 学习笔记
- LOJ#2145. 「SHOI2017」分手是祝愿
- 提前批无笔试,3天后截止!!字节跳动智能创作实验室-图像团队2022秋招提前批投递...
- 服务器数据库带宽费开票项目,服务器带宽和访问数据库速度
- 添加文件夹语音_微信语音导出方法大全,微信群语音转发只需3步
- php中文歌词,酷狗krc歌词解析并转换为lrc歌词php版
- 涨姿势!一文了解深度学习中的注意力机制
- HTML5实习手机端浏览器拍照和本地上传
- sample函数—R语言
- AGI STK使用本地地形和地图
- 自动化测试遇到的难点_自动化测试不成功的原因和实施过程中存在的问题
- Echarts Y轴遮挡解决方案
- NR modulation 4-AM
- 这是一个基于Threejs的商品VR展示系统的 VR模型展示Demo
- 安全进阶:虚拟防火墙基础实验