当前位置: 首页 > news >正文

leetcode:13. 罗马数字转整数(python3解法)

难度:简单

罗马数字包含以下七种字符: 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:

输入: 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.

提示:

  • 1 <= s.length <= 15
  • s 仅含字符 ('I', 'V', 'X', 'L', 'C', 'D', 'M')
  • 题目数据保证 s 是一个有效的罗马数字,且表示整数在范围 [1, 3999] 内
  • 题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。
  • IL 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX 。
  • 关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。

题解:

class Solution(object):def romanToInt(self, s):roma_dict = {'M':1000,'D':500,'C':100,'L':50,'X':10,'V':5,'I':1}sum_res = 0for i in range(len(s)-1):if roma_dict[s[i]] >= roma_dict[s[i+1]]:sum_res += roma_dict[s[i]]else:sum_res -= roma_dict[s[i]]last_num = s[len(s)-1]sum_res = sum_res + roma_dict[last_num]return sum_res

相关文章:

  • 【Linux】:初识git || centos下安装git || 创建本地仓库 || 配置本地仓库 || 认识工作区/暂存区(索引)以及版本库
  • 5G创新突破 | 紫光展锐5G芯片全球首发R17 NR广播端到端业务演示
  • 为什么 conda 不能升级 python 到 3.12
  • python 按字段查询数据库
  • Kubernetes rancher、prometheus、ELK的安装
  • flink状态和检查点
  • Xcode15 framework ‘CoreAudioTypes‘ not found
  • OTP语音 NV040C芯片在智能闹钟的应用
  • Mac安装opencvJava踩坑
  • VS Code Counter统计代码量(vscode扩展工具)
  • linux开机自动挂载目录
  • 怎么学编程效率高,编程练习网站编程软件下载,中文编程开发语言工具下载
  • 高防IP的原理
  • 〔001〕虚幻 UE5 安装教程
  • libwebsockets入门
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [Vue CLI 3] 配置解析之 css.extract
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 30秒的PHP代码片段(1)数组 - Array
  • 77. Combinations
  • ESLint简单操作
  • httpie使用详解
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • opencv python Meanshift 和 Camshift
  • PHP 7 修改了什么呢 -- 2
  • VuePress 静态网站生成
  • Vue官网教程学习过程中值得记录的一些事情
  • web标准化(下)
  • 读懂package.json -- 依赖管理
  • 关于字符编码你应该知道的事情
  • 后端_MYSQL
  • 基于web的全景—— Pannellum小试
  • 前端面试总结(at, md)
  • 推荐一个React的管理后台框架
  • 为视图添加丝滑的水波纹
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • scrapy中间件源码分析及常用中间件大全
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #在 README.md 中生成项目目录结构
  • (超详细)语音信号处理之特征提取
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (七)Knockout 创建自定义绑定
  • (一)VirtualBox安装增强功能
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转) 深度模型优化性能 调参
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网