题目描述

罗马数字包含以下七种字符:I, V, X, LCD 和 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)相关推荐

  1. LeetCode:第13题 罗马数字转整数 python语言实现 2020.2.3

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             10 L ...

  2. LeetCode高频题13:罗马数字转整数

    LeetCode高频题13:罗马数字转整数 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批ACM ...

  3. leetcode学习记录-罗马数字转整数

    题目 13.罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, ...

  4. 20190913:(leetcode习题)罗马数字转整数

    罗马数字转整数 题目 大致思路 代码实现 题目 大致思路 跟上题一样,不需要思路,直接把各种情况列出来即可. 代码实现 package com.immunize.leetcode.romanTOINT ...

  5. Leetcode 简单四 罗马数字转整数

    罗马数字转整数: PHP 76ms: 核心思想为哈希表操作.PHP的具体表现为关联数组.把基本数据和6大特殊数据类型何其对应的数据设为关联数组,判断是否存在并累加即可.时间复杂度O(n),空间复杂度为 ...

  6. 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 ...

  7. LeetCode(13)——罗马数字转整数(JavaScript)

    罗马数字包含以下七种字符:I,V, X, L,C,D 和M. 字符-------数值 I--------------1 V-------------5 X------------10 L------- ...

  8. 力扣13题---罗马数字转整数

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...

  9. 刻意练习:LeetCode实战 -- Task13. 罗马数字转整数

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  10. 罗马数字转整数Python解法

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             10 L ...

最新文章

  1. ContentResolver.query()—buildQueryString()
  2. リストに項番をつける
  3. USB2.0 设备类代码表
  4. c++中声明和定义的区别(这个兄弟写的解决了我的疑惑)
  5. vue组件的实例使用
  6. 小程序 - 学习笔记
  7. LOJ#2145. 「SHOI2017」分手是祝愿
  8. 提前批无笔试,3天后截止!!字节跳动智能创作实验室-图像团队2022秋招提前批投递...
  9. 服务器数据库带宽费开票项目,服务器带宽和访问数据库速度
  10. 添加文件夹语音_微信语音导出方法大全,微信群语音转发只需3步
  11. php中文歌词,酷狗krc歌词解析并转换为lrc歌词php版
  12. 涨姿势!一文了解深度学习中的注意力机制
  13. HTML5实习手机端浏览器拍照和本地上传
  14. sample函数—R语言
  15. AGI STK使用本地地形和地图
  16. 自动化测试遇到的难点_自动化测试不成功的原因和实施过程中存在的问题
  17. Echarts Y轴遮挡解决方案
  18. NR modulation 4-AM
  19. 这是一个基于Threejs的商品VR展示系统的 VR模型展示Demo
  20. 安全进阶:虚拟防火墙基础实验

热门文章

  1. jupyter notebook快捷键使用指南
  2. 杨强教授团队权威专著《联邦学习》问世,展现数据孤岛和数据保护难题破解之法
  3. Linux多线程服务端编程:使用muduo C++网络库
  4. 从例图中学习思维导图的基本概念
  5. 03 两个重要极限函数
  6. 深度学习:径向基网络(RBF)
  7. linux编译fdk aac,编译x264和fdk-aac
  8. MTK平台camera驱动架构分析
  9. JavaScript 随笔
  10. S11 day 94 RestFramework 之 APIView视图