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

力扣经典面试13罗马数字转整数

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

解题思路:

1.首先创建一个字典,将罗马数字的字符与其对应的整数数值进行映射,这样方便后续根据字符获取其数值。

2.然后遍历给定的罗马数字字符串,对应每一个字符,获取其对应的数值。

3.当遍历到某个字符时,需要检查它是否可能与下一个子粗构成下一个字符构成特殊情况,(即小小数字在大数字左边的情况)。如果是特殊情况,就需要减去当前字符对应的数值(因为它是作为减数),否则就直接加上当前字符对应的数值。

4.继续遍历直到处理完整个罗马数字字符串,最后得到的总和就是转换后的整数。

代码:

代码解析:

1.首先定义了roman_dict字典,用于存储罗马数字字符和其对应整数的映射关系。

2.初始化result为0,用于累加转换后的整数值

3.通过循环遍历罗马数字字符串s,每次获取当前字符对应的数值value。

4.如果当前字符不是字符串的最后一个子粗,并且下一个字符对应的数值大于当前字符的数值,就说明遇到了特殊情况,此时将当前字符的数值从result中减去;否则就将当前字符的数值加到result中。最后返回result即为转化后的整数。


http://www.kler.cn/a/400840.html

相关文章:

  • Docker 基础命令介绍和常见报错解决
  • 理解 Python 中的 __getitem__ 方法:在自定义类中启用索引和切片操作
  • 使用Python编写一个简单的网页爬虫,从网站抓取标题和内容。
  • 【原创】如何备份和还原Ubuntu系统,非常详细!!
  • 【算法】【优选算法】前缀和(下)
  • 【C语言】科技要闻。
  • springboot006基于SpringBoot的网上订餐系统(源码+包运行+LW+技术指导)
  • DOM NodeList 对象简介
  • 7天掌握SQL - 第一天:数据库基础与SQL入门
  • 在AndroidStudio中新建项目时遇到的Gradle下载慢问题,配置错的按我的来,镜像地址不知道哪个网页找的,最主要下载要快
  • 汽车资讯新趋势:Spring Boot技术解读
  • ClickHouse的介绍、安装、数据类型
  • 泷羽sec-安全见闻(8)
  • Gradio 和 Streamlit 安装与使用教程
  • 在Unity中使用Epplus写Excel
  • 使用Mybatis向Mysql中的插入Point类型的数据全方位解析
  • API 数据处理与 SQL 批量更新技巧:CASE 语句优化操作指南
  • RadSystems 自定义页面全攻略:个性化任务管理系统的实战设计
  • CSS3_过渡(八)
  • 力扣(leetcode)面试经典150题——26. 删除有序数组中的重复项
  • 35.搜索插入位置-力扣(LeetCode)
  • ssm139选课排课系统的设计与开发+vue(论文+源码)_kaic
  • React Native 全栈开发实战班 - 打包发布之热更新
  • shell编程规范和脚本变量
  • UE5 猎户座漂浮小岛 07 场景
  • TCP/IP--Socket套接字--JAVA