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

Leetcode 罗马数字转整数

在这里插入图片描述
代码的算法思想可以分为以下几步:

  1. 建立映射表

    • 首先,代码使用 HashMap 来存储罗马数字字符与其对应的整数值关系。例如,I 对应 1,V 对应 5,以此类推。这是为了方便后续快速查找每个罗马字符对应的整数值。
  2. 从右向左遍历罗马数字字符串

    • 代码从字符串的右边(最低位)开始,逐个字符地向左遍历。这是因为罗马数字中,如果一个较小的数出现在较大的数的左边,则需要从总数中减去该小数。通过从右向左遍历,可以更方便地处理这种减法规则。
  3. 累加或减去对应值

    • 遍历过程中,对于每个字符,首先查找它在映射表中的整数值。
    • 如果当前字符的值小于前一个字符的值(比如 IV 中的 I 小于 V),则说明需要执行减法,将当前值从结果中减去。
    • 如果当前字符的值大于或等于前一个字符的值,则说明需要执行加法,将当前值加到结果中。
  4. 更新前一个字符的值

    • 在每次循环中,将当前字符的值更新为 “前一个字符的值”,以便下一次循环使用。这是为了在下一个字符判断时,可以对比当前值与前一个字符的值,决定是加法还是减法。
  5. 输出最终结果

    • 遍历完成后,result 变量中存储的就是整个罗马数字字符串对应的整数值。

示例解释

以字符串 "MCMXCIV" 为例:

  • 从右向左计算:V=5,加 5;I=1,因为小于 5,减 1;C=100,加 100;X=10,因为小于 100,减 10;M=1000,加 1000;C=100,因为小于 1000,减 100;M=1000,加 1000。
  • 最终得到的结果是 1994

算法复杂度

该算法的时间复杂度为 (O(n)),其中 (n) 为罗马数字字符串的长度。

java 代码实现

class Solution {public int romanToInt(String s) {Map<Character, Integer> map =  new HashMap<>();map.put('I', 1);map.put('V', 5);map.put('X', 10);map.put('L', 50);map.put('C', 100);map.put('D', 500);map.put('M', 1000);//设置一个变量来记录前一个位置的数值int prevValue = 0;//设置一个变量来存储最终结果int result = 0;for(int i = s.length() - 1; i >= 0; i--) {//获取当前位置的数值int currentValue = map.get(s.charAt(i));if(currentValue < prevValue) {result -= currentValue;}else {result += currentValue;}prevValue = currentValue;}return result;}
}
http://www.lryc.cn/news/482052.html

相关文章:

  • 东方通TongWeb替换Tomcat的踩坑记录
  • ceph介绍和搭建
  • 树莓派安装FreeSWITCH
  • OpenSSL 生成根证书、中间证书和网站证书
  • MySQL核心业务大表归档过程
  • dapp获取钱包地址,及签名
  • 探索Dijkstra算法的普遍最优性:从经典算法到最新学术突破
  • ‍️代码的华尔兹:在 Makefile 的指尖上舞动自动化的诗篇
  • 函数式编程Stream流(通俗易懂!!!)
  • 数据分析:转录组差异fgsea富集分析
  • 在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
  • AI笔筒操作说明及应用场景
  • Android自启动管控
  • 把握鸿蒙生态崛起的机遇:开发者视角的探讨
  • MySQL初学之旅(1)配置与基础操作
  • 一款革命性的视频剪辑工具,AI剪辑新纪元:Clapper
  • HTML 区块
  • 复杂度的讲解
  • [ Linux 命令基础 2 ] Linux 命令详解-系统管理命令
  • 使用docker部署Prometheus和Grafana去监控mysql和redis
  • 日志管理 | Log360 实现PCI DSS v4.0数据安全合规要求
  • JAVA中的string和stringbuffer
  • 轻型民用无人驾驶航空器安全操控------理论考试多旋翼部分笔记
  • 计算用户订购率梧桐数据库和oracle数据库sql分析
  • 通过DNS服务器架构解释DNS请求过程
  • OKG Research:用户意图驱动的Web3应用变革
  • hbase 工具类
  • 会议直击|美格智能受邀出席第三届无锡智能网联汽车生态大会,共筑汽车产业新质生产力
  • 在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化的教程
  • Android13 系统/用户证书安装相关分析总结(三) 增加安装系统证书的接口遇到的问题和坑