LeetCode简单题之罗马数字转整数

news/2025/3/15 1:13:52/

题目

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

解题思路

  这个题可以遍历罗马数字然后从高位向低位加起,遇到特殊情况然后再进行相应的处理。

class Solution:def romanToInt(self, s: str) -> int:d={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}if len(s)==1:return d[s[0]]n=d[s[0]]for i in range(1,len(s)):n+=d[s[i]]if d[s[i]]>d[s[i-1]]:n-=2*d[s[i-1]]return n

在这里插入图片描述


http://www.ppmy.cn/news/606232.html

相关文章

Linux学习(2)——虚拟机和CentOS安装(图文详解超详细)

虚拟机的安装CentOS的安装(后面提供了网盘链接)CentOS 安装到 VMwareCentOS安装难点 ——网络连接方式虚拟机克隆虚拟机快照虚拟机的迁移和删除虚拟机的安装 学习Linux需要一个环境&#xff0c;我们需要创建一个虚拟机&#xff0c;然后在虚拟机上安装一个Centos系统来学习 先安…

Pytorch的默认初始化分布 nn.Embedding.weight初始化分布

一、nn.Embedding.weight初始化分布 nn.Embedding.weight随机初始化方式是标准正态分布 &#xff0c;即均值$\mu0$&#xff0c;方差$\sigma1$的正态分布。 论据1——查看源代码 ## class Embedding具体实现&#xff08;在此只展示部分代码&#xff09; import torch from torc…

小芯片与大芯片技术

小芯片与大芯片技术 芯片尺寸构装&#xff08;Chip Scale Package, CSP&#xff09;是一种半导体构装技术。。作为新一代的芯片封装技术&#xff0c;在TSOP、BGA的基础上&#xff0c;CSP的性能又有了革命性的提升。 CSP&#xff0c;全称为Chip Scale Package&#xff0c;即芯片…

LeetCode简单题之两个列表的最小索引总和

题目 假设 Andy 和 Doris 想在晚餐时选择一家餐厅&#xff0c;并且他们都有一个表示最喜爱餐厅的列表&#xff0c;每个餐厅的名字用字符串表示。 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个&#xff0c;则输出所有答案并且不考虑顺序。 你可以假…

apt命令概述,apt命令在Ubuntu16.04安装openjdk-7-jdk

apt是一条linux命令&#xff0c;适用于deb包管理式操作系统&#xff0c;主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。deb包是Debian 软件包格式的文件扩展名。 翻译过来就是&#xff1a; apt是一个命令行包管理器&#xff0c;为 搜索和管理以及查询…

LeetCode简单题之数组形式的整数加法

题目 对于非负整数 X 而言&#xff0c;X 的数组形式是每位数字按从左到右的顺序形成的数组。例如&#xff0c;如果 X 1231&#xff0c;那么其数组形式为 [1,2,3,1]。 给定非负整数 X 的数组形式 A&#xff0c;返回整数 XK 的数组形式。 示例 1&#xff1a; 输入&#xff1a;A…

Linux学习(3)——安装vmtools

安装vmtools vmtools安装后&#xff0c;我们可以在Windows下更好的管理vm虚拟机可以设置Windows和centos的共享文件夹 安装步骤进入centos点击vm菜单的–>install vmware toolscentos会 出现一个vm的安装包,xx.tar.gz拷贝到/opt使用解压命令tar,得到一个安装文件 cd /opt/[…

从DPU开始到RDMA到CUDA

从DPU开始到RDMA到CUDA DPU是Data Processing Unit的简称&#xff0c;它是最新发展起来的专用处理器的一个大类&#xff0c;是继CPU、GPU之后&#xff0c;数据中心场景中的第三颗重要的算力芯片&#xff0c;为高带宽、低延迟、数据密集的计算场景提供计算引擎。 DPU将作为CPU的…