leetcode-第13题-罗马数字转整数

LeetCode 第13题:罗马数字转整数 恭喜你,你已经成功地掌握了罗马数字转换为整数的奥秘!通过这篇博客,我们不仅了解了罗马数字的基本规则和各种例子,还一步步将思路转化为代码,最终实现了一个有效的解决方案。解决LeetCode上的问题不仅能提高我们的编程能力,还能让我们从中学习到更多的算法和数据结构知识。如果你有更好的解题思路,欢迎在评论区与我们分享。 阅读详情
//罗马数字包含以下七种字符: 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 到 3999 的范围内。
// 示例 1:
// 输入: "III"
//输出: 3 
// 示例 2:
// 输入: "IV"
//输出: 4 
// 示例 3:
// 输入: "IX"
//输出: 9 
// 示例 4:
// 输入: "LVIII"
//输出: 58
//解释: L = 50, V= 5, III = 3.
// 示例 5:
// 输入: "MCMXCIV"
//输出: 1994
//解释: M = 1000, CM = 900, XC = 90, IV = 4. 
// 提示:
// 题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。
// IC 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX 。 
// 关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。 
// Related Topics 数学 字符串
// 👍 1026 👎 0


package com.zqh.leetcode.editor.cn;

//Java:罗马数字转整数
public class P13RomanToInteger {
    public static void main(String[] args) {
        Solution solution = new P13RomanToInteger().new Solution();
        System.out.println(solution.romanToInt("III"));
        // TO TEST
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int romanToInt(String s) {
            // 采用map内存开销太大,采用switch
//            HashMap<Character, Integer> map = new HashMap<>(8);
//            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);
            char[] chars = s.toCharArray();
            int c = 0;
//          解题要点
//          1.如果当前数字是最后一个数字,或者之后的数字比它小的话,则加上当前数字。
//          2.其他情况则减去这个数字。跳过下一个数字
            for (int i = 0; i < chars.length; i++) {
                if (i == chars.length - 1 || getNumeral(chars[i]) >= getNumeral(chars[i + 1])) {
                    c += getNumeral(chars[i]);
                    continue;
                }
                c += getNumeral(chars[i + 1]) - getNumeral(chars[i]);
                i++;
            }
            return c;
        }

        public int getNumeral(char c) {
            switch (c) {
                case 'I':
                    return 1;
                case 'V':
                    return 5;
                case 'X':
                    return 10;
                case 'L':
                    return 50;
                case 'C':
                    return 100;
                case 'D':
                    return 500;
                case 'M':
                    return 1000;
                default:
                    return 0;
            }
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}

 

深入解析LinuxCNC源码:从界面开发到硬件交互 本文深入解析LinuxCNC开源数控系统的源码架构与二次开发实践。详细介绍了从GTK+界面定制、Python脚本绑定,到硬件抽象层(HAL)配置与核心运动控制模块的完整开发流程。通过实战案例,帮助开发者掌握如何基于LinuxCNC源码进行界面开发和硬件交互定制,实现个性化数控系统。 阅读详情

相关推荐

基于溶解气体分析(DGA)的变压器DGA数据故障诊断含代码含数据

在拥有可靠的DGA数据的前提下,结合机器学习分类算法,可以实现变压器的故障诊断。在此数据集的基础上,用随机森林跑出的结果如图。

Jason_Orton的博客 2695

罗马数字转整数,最长公共前缀,二进制求和

文章目录罗马数字转整数最长公共前缀二进制求和 罗马数字转整数 罗马数字包含以下七种字符: 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, 即为...

CoolSuperman的博客 342

VS2019 从零构建 OSG+OSGEarth+OSGQt 开发环境实战指南

本文提供了一份详细的实战指南,指导开发者如何在Windows系统下使用VS2019从零开始编译和配置OSG、OSGEarth与OSGQt开发环境。文章涵盖了从环境准备、源码获取、CMake配置、Visual Studio编译到最终测试的完整流程,并分享了关键的避坑技巧,旨在帮助三维GIS与可视化开发者高效搭建稳定、可控的专业开发平台。

weixin_28826961的博客 366

LeetCode【13--罗马数字转整数】LeetCode【14--最长的公共前缀】

罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的...

LXY的博客 533

时序分析-由D触发器结构来理解Tsu、Th

FPGA逻辑单元内的D触发器(D-FF)是一种在时钟的上升沿(或下降沿)将输入信号的变化传送至输出的边沿触发器。 数字电子技术基础-闫石(第五版)边沿D触发器内部结构见下图: 而FPGA原理与结构(日)一书中,内部结构较之上图多了俩反相器: 由传输门和俩个反相器组成一个循环电路(锁存器),再由前后两级锁存器按主从结构链接而成。这里的传输门起开关作用,随着CLK的状态变化切换开关。只看输出的话,前级锁存器的值会随着时钟输入的变化井然有序地传入后级锁存器。为了防止时钟信号变化时输入信号发生冒险,从而使稳定.

XY_Chang的博客 3970

阿波罗开发板硬件架构与STM32模块化设计详解

嵌入式开发板的模块化设计是提升硬件复用性、降低迭代成本的关键技术路径。其核心在于底板与核心板的电气解耦与功能分层,依托STM32系列MCU(如F429/F767)的丰富外设资源与引脚复用能力,实现信号完整性、电源域隔离与热管理的系统级协同。该架构显著支撑工业HMI、智能家居网关、便携医疗设备等典型场景,尤其在RGB LCD驱动、QSPI Flash内存映射、多协议通信(CAN/RS485/USB)及低功耗唤醒(WK_UP按键)等工程实践中展现出高可靠性与易调试性。本文围绕阿波罗开发板展开深度解析,覆盖最小系

weixin_42510201的博客 63

12整数转罗马数字;13罗马数字转整数;14最长公共前缀;16最接近的三数之和;18四数之和

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。...

Lifelong Learning Pan 384

迟滞比较器原理及计算

为什么要用迟滞比较器 在讲迟滞比较器之前,我们先看一个案例。 在产品设计中常常需要用到电机,而电机在从运转到停止过程中需要泄放能量,这种能量大部分以电压的形式反馈回电源母线(Vbus)导致Vbus母线电压升高,特别是功率大又转速快的电机需要急刹时,产生的反馈电压更高,严重时可能导致母线上其他器件的损坏。 为了防止将电机反馈的能量泄放掉,我们需要设计一个电路来检测母线电压,当母线电压高于某一安全阈值时,打开MOSFET Q1将母线上的能量通过电阻R5以热的形式消耗掉。 假如用一般的比较器,设计如下: Vbu

sinat_15677011的博客 2万+

【icyle】Leetcode-cn:12.整数转罗马数字

题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况: I 可以放在 V

icy的代码小屋 186

基于 Mask R-CNN 的实例分割:从零开始构建一个强大的分割模型

在本文中,我们将介绍如何使用 Mask R-CNN(Region-based Convolutional Networks with Masks)实现实例分割。实例分割是计算机视觉中的一种任务,旨在识别并分割图像中的各个对象。我们将讨论如何准备数据集、配置 Mask R-CNN 模型并在自定义数据集上进行训练。

斌擎科技 1242

基于微博API与Scrapy-Redis的城市情绪地图数据爬取实战

本文详细介绍了如何利用Python爬虫技术从微博平台获取用户发布内容,用于构建城市情绪地图的毕业设计项目。文章涵盖了微博API的调用、Scrapy-Redis分布式爬虫架构、数据清洗与存储、反爬虫策略应对以及情绪分析预处理等关键技术,提供了完整的代码实现和实战经验。python复制下载# items.py"""清洗文本数据"""if text:# 移除HTML标签# 移除多余空白字符"""解析微博日期格式"""

2201_76125261的博客 444

Mathematica--上课笔记(1)

新手入门mathematic 介绍 根据课上老师所讲Mathematica,记录下相关知识点牢记首字母都要大写 简单认识 1.若要查询人口最多的50座城市,命令记为EntityList[Entity[“City”, “Population” -> TakeLargest[50]]],使用shift+enter按键呈现结果 切记mathematic里面是使用中括号* 2.若想在地图中显示出来可...

weixin_46421155的博客 731

YOLO26涨点改进 | 全网独家创新,注意力改进篇 | TGRS 2025 | 引入APCM自适应像素级协同机制,动态增强目标区域、抑制背景噪声,助力YOLO26做红外小目标检测有效涨点

本文提出一种基于APCM模块改进的YOLO26网络模型,通过像素级局部-全局协同建模动态增强目标特征并抑制背景噪声。APCM模块采用轻量化设计,无需复杂参数,在特征提取阶段有效提升目标区域特征表达质量,尤其适用于低对比度和复杂场景下的目标检测。实验表明,该方法能显著提高小目标检测精度和模型鲁棒性,同时保持较低计算开销。模块通过局部特征分支和全局特征分支的协同融合,实现了对红外小目标的有效增强,在NUAA-SIRST和IRSTD-1K数据集上性能优于现有方法。文章还提供了完整的代码实现和配置指南。

Ai缝合怪、助力小伙伴高效发论文 184

力扣LeetCode第13题罗马数字转整数

力扣第13题

weixin_44061444的博客 313

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

力扣(leetcode) 第13题 罗马数字转整数

第一次发布

TheFrog_js的博客 410

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

力扣 (LeetCode)-13. 罗马数字转整数|刷题打卡

Github来源:力扣 (LeetCode)|刷题打卡 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者[已开启]任务一:刷题打卡 * 10 篇哪吒人生信条:如果你所学的东西 ...

程序员哆啦A梦,蓝胖子 878

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LeetCode第13题_罗马数字转整数

这道题的关键点:理解罗马数字的表示规则识别特殊情况的处理方法选择合适的实现策略两种解法比较:从左到右扫描:代码简洁,思路清晰预处理特殊情况:更直观,但代码较复杂优化思路:使用数组替代Dictionary可能更快特殊情况的处理可以优化考虑输入验证。

qq_40263592的博客 695

leetcode第13题: 罗马数字转整数

摘要:罗马数字转整数的关键在于处理特殊减法规则(如IV表示4)。通过建立字符-数值映射表,遍历字符串时比较当前字符与下一个字符的值:若当前值小于下一个值则减去当前值,否则加上当前值。这种方法高效处理了所有常规和特殊情况,最终累加得到对应的整数结果。时间复杂度为O(n),空间复杂度为O(1)。

2403_85911068的博客 753

【力扣13题】罗马数字转整数

罗马数字包含以下七种字符:IVXLCD和M。例如, 罗马数字2写做II,即为两个并列的 1。12写做XII,即为XII。27写做XXVII, 即为XXVII。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为IX。IVXXLCCDM。

qq_59566194的博客 328

leetcode—13题—罗马数字转整数—Java版—个人解法

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II。27 写做 XXVII, 即为 XX + V + II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为 IX。

PYmili的博客 859

力扣第13题:13.罗马数字转整数学习记录和思路

复盘力扣第13题的思路并进行总结

AssassinTheD的博客 612

菜鸟刷题LeetCode13. 罗马数字转整数

力扣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, 即

lion_cute的博客 174

leetcode算法题详解系列:13题罗马数字转整数

private:下的成员变量和成员函数默认是私有的,不能直接在类外访问,因此这里的unordered_map 是私有成员,用于存储罗马数字符号到整数的映射。(类 是一种自定义的数据类型,用于封装数据和操作这些数据的函数。5. 然后在public后定义了一个公有函数 romanToInt ,它接受一个 string 类型的参数 S,表示一个罗马数字字符串,返回一个 int,表示该罗马数字转换后的整数值。当前字符的值不小于下一个字符的值,或者当前字符是最后一个字符,即执行ans = ans + value。

weixin_44979308的博客 1047

LeetCode第13题—罗马数字转整数—【题解+思路】

LeetCode第13题——罗马数字转整数,题解+思路。

但行好事,莫问前程 296

LeetCode刷题记录——13罗马数字转整数

LeetCode刷题记录——13罗马数字转整数 一 题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 100...

qq_42611498的博客 277

LeetCode第13题:罗马数字转整数

LeetCode第13题:罗马数字转整数。

Laity 342
上一篇: leetcode-第11题-盛最多水的容器
下一篇: leetcode-第27题-移除元素
97牛肉面
博客等级 码龄9年 54粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值