Leetcode面试经典150_Q13罗马数字转整数

题目:

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

给定一个罗马数字,将其转换成整数。

思路:通常情况下,罗马数字中小的数字在大的数字的右边。若输入的字符串满足该情况,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值即可。

若存在小的数字在大的数字的左边的情况,根据规则需要减去小的数字。对于这种情况,我们也可以将每个字符视作一个单独的值,若一个数字右侧的数字比它大,则将该数字的符号取反。

Python:

class Solution:SYMBOL_VALUES = {'I': 1,'V': 5,'X': 10,'L': 50,'C': 100,'D': 500,'M': 1000,}def romanToInt(self, s: str) -> int:ans = 0n = len(s)for i, ch in enumerate(s):value = Solution.SYMBOL_VALUES[ch]if i < n - 1 and value < Solution.SYMBOL_VALUES[s[i + 1]]:ans -= valueelse:ans += valuereturn ans

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Node.js模拟执行JavaScript

使用Node.js模拟执行JavaScript 模拟执行的是JavaScript&#xff0c;而且依赖的是Node.js&#xff0c;为什么不直接用Node.js来尝试JavaScript的执行呢&#xff1f;其实是完全可行的。 准备工作 确保已经正确安装好了Node.js。安装流程可以在小蜜蜂AI网站获取。 模拟执行 …

CV2不同图像插值方式的区别

最近邻插值&#xff08;Nearest-neighbor interpolation&#xff0c;cv2.INTER_NEAREST&#xff09;&#xff1a; 基于最近的像素值进行插值。简单快速&#xff0c;但可能会产生锯齿状的边缘。通常用于图像放大时速度要求较高的情况。 双线性插值&#xff08;Bilinear interpol…

Day17_学点JavaEE_转发、重定向、Get、POST、乱码问题总结

1 转发 转发&#xff1a;一般查询了数据之后&#xff0c;转发到一个jsp页面进行展示 req.setAttribute("list", list); req.getRequestDispatcher("student_list.jsp").forward(req, resp);2 重定向 重定向&#xff1a;一般添加、删除、修改之后重定向到…

新能源汽车动力电池散热技术

为了进一步解决能源危机问题&#xff0c;我国大力提倡新能源的开发&#xff0c;其中以电力驱动的新型能源汽车&#xff0c;是我国大规模进入新能源应用的关键领域。新能源汽车是指使用非化石能源&#xff08;如电力、太阳能等&#xff09;作为动力源的汽车&#xff0c;其具有低…

Flutter如何集成到已有iOS工程上

大家好&#xff0c;我是咕噜铁蛋&#xff0c;今天我将和大家分享一个实用的技术教程——如何将Flutter集成到已有的iOS工程中。Flutter是Google推出的一款开源的移动UI框架&#xff0c;它允许开发者使用Dart语言来开发高性能、美观的原生应用&#xff0c;并支持iOS和Android两大…

Walmart.com DSV XML对接需求

此前的文章Walmart.com DSV EDI对接需求中&#xff0c;为大家介绍了如果选择传输EDI文件需要做的准备与需求。本文将为大家介绍Walmart.com 与DSV&#xff08;Drop Ship Vender&#xff09;之间传输XML文件的需求。与EDI相比&#xff0c;XML文件的处理难度相对低一些。无论企业…

Linux文件和目录管理及文本搜索命令find grep

在Linux操作系统中&#xff0c;“find” 和 “grep” 是两个非常常用的命令&#xff0c;它们在文件和目录管理以及文本搜索方面提供了强大的功能。 首先&#xff0c;让我们来看一下"find"命令。“find"命令用于在文件系统中搜索文件和目录。它可以根据指定的条…

Kafka生产者在Java中的应用

加油&#xff0c;新时代打工人&#xff01; 1、导入Maven Kafka POM依赖 <repositories><repository><id>central</id><url>http://maven.aliyun.com/nexus/content/groups/public//</url><releases><enabled>true</enabl…

stm32GPO的相关操作

GPIO的使用 1.GPIO八种工作模式1.1 上拉输入1.2 下拉输入1.3 浮空输入1.4 模拟输入1.5 推挽输出1.6 开漏输出1.7 复用推挽输出1.8 复用开漏输出 2.相关寄存器2.1 寄存器配置IO 3.相关库函数 1.GPIO八种工作模式 保护二极管的作用&#xff1a;用来保护IO&#xff0c;一般情况IO的…

【Linux】TCP编程{socket/listen/accept/telnet/connect/send}

文章目录 1.TCP接口1.1socket文档 1.2listen拓&#xff1a;端口号8080 1.3accept拓&#xff1a;今天全局函数 1.4读写接口1.5telnet1.一个客户端2.两个客户端 1.6ulimit -a1.7常识回顾1.8connect1.9拓&#xff1a;客户端的ip和地址什么时候被分配&#xff1f;1.10拓&#xff1a…

【python读取含有url图片链接的txt文档-3】

如果你需要一个更复杂的解决方案来进行图像数据增强&#xff0c;那么你可以考虑使用imgaug&#xff08;Image Augmentation&#xff09;库。imgaug是一个强大且灵活的图像增强库&#xff0c;它提供了大量的预定义增强方法&#xff0c;并且允许你自定义自己的增强策略。 以下是…

设计模式之命令模式讲解

概念&#xff1a;命令模式&#xff08;Command Pattern&#xff09;又称行动&#xff08;Action&#xff09;模式或交易&#xff08;Transaction&#xff09;模式。将一个请求封装成一个对象&#xff0c;从而让你使用不同的请求把客户端参数化&#xff0c;对请求排队或者记录请…

数据结构:冒泡排序,快速排序,插入排序

冒泡排序&#xff0c;每次只排一个&#xff0c;像鱼吐泡泡一样&#xff0c;从数组最后开始两两交换&#xff0c;一次只找到一个当前最小的&#xff0c;放到第一个,第二个...位置. T(n)O(n的平方&#xff09;,有序O(n) S&#xff08;n&#xff09;O&#xff08;1&#xff09; #i…

使用 Spring Boot 和 Maven 引入本地 Jar 包

背景 在 Java 开发中&#xff0c;有时候我们需要引入本地的 Jar 包到项目中&#xff0c;以满足特定的功能需求。本文将以引入 id 生成器为例&#xff0c;介绍如何在 Spring Boot 项目中使用 Maven 管理本地 Jar 包。 准备工作 创建 libs 目录&#xff1a; 在项目根目录下创建…

Flink KafkaSource 启用动态分区检查

Flink KafkaSource 启用动态分区检查 在不同版本的Flink中&#xff0c;动态分区检查&#xff08;Dynamic Partitions Check&#xff09;启用方式可能会有一些变化。以下是不同版本变化的情况总结&#xff1a; 1. Flink版本< 1.11 分区发现 Flink Kafka Consumer 支持发现动…

spring eureka 服务实例实现快速下线快速感知快速刷新配置解析

背景 默认的Spring Eureka服务器&#xff0c;服务提供者和服务调用者配置不够灵敏&#xff0c;总是服务提供者在停掉很久之后&#xff0c;服务调用者很长时间并没有感知到变化。或者是服务已经注册上去了&#xff0c;但是服务调用方很长时间还是调用不到&#xff0c;发现不了这…

pandas,polars,pyspark的df对象常见用法对比

案例背景 最近上班需要处理的都是百万&#xff0c;千万级的数据&#xff0c;pandas的性能已经不够看了&#xff08;虽然它在处理数据上是真的很好用&#xff09;&#xff0c;公司都是用的polar和pyspark&#xff0c;我最近也学习了一些&#xff0c;然后写篇文章对比一下他们的…

java中word转为pdf

背景&#xff1a;由于前端vue无法实现复杂的word可视化插件&#xff0c;希望后端做个能将复杂word转为pdf的方案。&#xff08;这里我最终使用的是documents4j&#xff09; java中word转为pdf 经过gpt、网上搜索、以及多方面的考量有以下几种方案。 1.poi原生的转换&#xff…

2024年150道高频Java面试题(二十一)

41. ArrayList 和 LinkedList 的区别是什么&#xff1f; ArrayList 和 LinkedList 都是 Java 中常用的 List 接口的实现&#xff0c;用于存储一系列动态的元素集合。它们之间的主要区别在于数据结构、性能特性、和适用场景。 数据结构&#xff1a; ArrayList 使用动态数组来实…

达梦使用disql登录数据库显示“未连接”

基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例问题&#xff1a;达梦数据库在使用disql登录时&#xff0c;显示“未连接”。 指定了IP和端口号还是连接异常。 […