【字符串】13. 罗马数字转整数(简单)

LeetCode题解:13.罗马数字转整数【Python题解超详细,直接映射法】,知识拓展:字符串切片的常见操作与技巧 LeetCode题解:13.罗马数字转整数【Python题解超详细,直接映射法】,知识拓展:字符串的常见操作与技巧:基本操作、简单切片操作、使用负数索引、使用步长、切片的边界情况、切片与str.join()、split()配合使用。 LeetCode题解: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 到 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 。
【代码】

class Solution {
public:
    int romanToInt(string s) {
        map<char,int> m;
        m['I']=1;m['V']=5;m['X']=10;m['L']=50;m['C']=100;m['D']=500;m['M']=1000;
        map<int,int> order;
        order['I']=1;order['V']=2;order['X']=3;order['L']=4;
        order['C']=5;order['D']=6;order['M']=7;
        int rs=0,len=s.size();
        for(int i=0;i<len;i++){
            if(i+1<len){
                // cout<<2<<"-"<<s[i]<<"-"<<m[s[i]]<<endl;
                if(s[i]=='I'&&s[i+1]=='V'){//
                    rs+=4;
                    i++;
                }else if(s[i]=='I'&&s[i+1]=='X'){//
                    rs+=9;
                    i++;
                }else if(s[i]=='X'&&s[i+1]=='L'){//
                    rs+=40;
                    i++;
                }else if(s[i]=='X'&&s[i+1]=='C'){//
                    rs+=90;
                    i++;
                }else if(s[i]=='C'&&s[i+1]=='D'){//
                    rs+=400;
                    i++;
                }else if(s[i]=='C'&&s[i+1]=='M'){//
                    rs+=900;
                    i++;
                }else{
                    rs+=m[s[i]];
                }
            }else{
                rs+=m[s[i]];
                // cout<<1<<"*"<<s[i]<<"*"<<m[s[i]]<<endl;
            }
        }
        return rs;
    }
};
Cursor AI编程工具保姆级安装指南:从下载到中文界面设置(含免费额度说明) 本文提供Cursor AI编程工具的保姆级安装与设置教程。详细指导从官网下载、安装到中文界面切换的每一步,并重点说明其每月500次高级模型调用的免费额度策略。通过个性化设置与核心插件推荐,帮助开发者快速上手,提升AI辅助编程效率。 阅读详情

相关推荐

C51单片机驱动ILI9341彩屏实战:从Proteus仿真到绘制自定义图案(附完整代码)

本文详细介绍了使用C51单片机驱动ILI9341彩屏的完整实战流程。内容涵盖硬件连接、8080并行接口时序模拟、寄存器初始化、屏幕方向设置以及基本图形绘制原理,并重点讲解了如何在Proteus仿真环境中搭建电路、调试代码,最终实现自定义图案的显示。文章提供了完整的代码示例,为嵌入式开发学习者和复古硬件爱好者提供了一套可行的解决方案。

rnn9storyteller的博客 511

罗马数字转整数 python

作者:18届 CYL 时间: 2020-10-1 标签:字典 题目描述 罗马数字包含以下七种字符: 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 。

appleclub666的博客 923

ServiceNow Discovery & CMDB Interview Questions and Answers (2025)

【代码】ServiceNow Discovery & CMDB Interview Questions and Answers (2025)

weixin_47584092的博客 910

c++(练习题)————罗马数字与整数的相互转换

一、题目描述: 罗马数字包含以下七种字符: 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 写做 ...

djh的博客 4410

RK806S PMIC电源管理芯片调试

当点按PWRON按键时,rk806上电开始启动bootloader和uboot,在执行到此处时检测到是由于按键启动的,所以0x5d的值是0x80,0x74的值是0x80,在一般情况下,mode都默认是none的,所以mode值为11,因此就进入了我们的if判断,若是由于按键启动的,则直接调用rk8xx_shutdown函数关掉,进入这个函数会看到实际是通过i2c给0x72寄存器的BIT(0)写1,使其关机。当SoC在12V电源已经接入,且处于关机状态时,使用PWRON按键开机,0x74的值则为0x80。

Y1anoohh的博客 2546

第一次面试经历:集创北方数字IC前端面试(崩)总结

时间:2020年8月11日上午10点 公司:集创北方,做LED、LCD、OLED、AMOLED等显示器芯片的公司,应该主要是做显示驱动、图像处理、电源管理等这一块。 岗位:数字IC前端设计 城市:北京 形式:线上面试。感觉我俩是两个社畜,他说摄像头开不开都可以,我说那语音OK吗他说OK,于是直接语音问答。 项目经历:基于FPGA的车牌识别 & 先导存储器集成工艺开发(课题组) & 基于FPGA的贪吃蛇小游戏 反正是凉凉的,这时候准备还不足,前面都在复习项目没怎么刷过题。 过程如下: 自我介绍

coin的博客 6681

LeetCode 罗马数字转整数c++

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

zhenzhenzhizhi的博客 1482

步进电机 cia402协议 报文自己的理解 (笔记)

步进电机 cia402协议 报文自己的理解 (笔记)

she666666的博客 3813

C++Leetcode13:罗马数字转整数

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

weixin_43434305的博客 332

DFT笔记 DC/AC mode与Func

DFT scan可以分为DC和AC两种,区别如下图。

m0_61544122的博客 5730

AndroidKiller之APK 编译失败,无法继续下一步签名【BUG解决】【App反向解析】

文章目录项目场景:问题描述原因分析:解决方案:BUG解决 项目场景: AndroidKiller: 在反向解析APP包时报错:APK 编译失败,无法继续下一步签名。 网上很多方法都是无效的哈,我追究原因发现,这个bug的出现大部分情况都是因为Apktool的问题。 此方法:百分之百解决此bug! 错误如下: 问题描述 APK 编译失败,无法继续下一步签名! 原因分析: Apktool版本不适配的问题,现在的技术更新换代太快,我们安装AndroidKiller的时候,有时候不是官方渠道的话,他的版本是非常

一键难忘的博客 2万+

Leetcode刷题笔记题解(C++):13. 罗马数字转整数

思路:从最后一个字符开始分析,存入,如果前一个比它小,则减去前一个的值,比如IV 5-1=4 如果前一个比它大或者相等,则加上前一个的值,比如VIII 5+1+1+1=8 代码如下: class Solution { public: int romanToInt(string s) { //用map来存放罗马字符对应的数字 map<char,int>roma_int={{'I',1},{'V',5},{'X',10},{'L',50},{...

Demo.demo的博客 268

以 Cloud 为核心的设备 mTLS 证书体系:从产品需求到 OP-TEE 安全落地

本文探讨了以云端为核心的物联网设备mTLS证书体系构建方案。文章从产品需求出发,分析了云端必须采用mTLS+证书体系管理设备身份的原因,指出静态Token方案的三大缺陷:身份不可控、运营不可控和审计不可控。重点阐述了mTLS在产品中的核心功能是加密传输和双向认证,并详细列出了云端PKI、设备注册中心等必备组件。在设备侧,强调必须通过OP-TEE技术保护私钥安全,提出了一个包含密钥生成、CSR导出等功能的TA设计方案。最后,文章给出了云端端到端流程示例,说明如何将证书生命周期管理转化为可运营的产品能力,包括自

Interview_TC的博客 642

【字符串】Leetcode 13. 罗马数字转整数【简单】

通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II。解释: M = 1000, CM = 900, XC = 90, IV = 4.空间复杂度:O(n),使用了一个HashMap来存储罗马数字字符和对应的数值,时间复杂度: O(n),其中 n 是罗马数字字符串的长度。解释: L = 50, V= 5, III = 3.

FLGB 418

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

字符串-简单13. 罗马数字转整数

罗马数字转整数 上来之后肯定是用map来存了,特殊情况2种方式考虑: 1.一共就6种 放到map里 class Solution { public: string chartoString(char x) { string s = ""; s.push_back(x); return s; } int romanToIn...

weixin_45730849的博客 138

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

力扣刷题记录#字符串#简单#13罗马数字转整数

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

阿刷的博客 198

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LeetCode 13. 罗马数字转整数(简单、字符串)day25

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

qq_43751200的博客 220

力扣——13.罗马数字转整数

数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。13. 罗马数字转整数 - 力扣(LeetCode)给定一个罗马数字,将其转换成整数。,即为两个并列的 1。

2301_77433167的博客 1884

[leetcode] 13. 罗马数字转整数

[leetcode] 13. 罗马数字转整数

lvhao123456789的博客 1543

力扣 13.罗马数字转整数

特殊组合判断及处理:在每次循环中,判断当前字符与下一个字符所对应的数值大小关系。如果当前字符对应的数值小于下一个字符对应的数值,说明遇到了罗马数字表示中的特殊情况(当前字符不是最后一个字且当前字符代表的值小于下一个字符),此时就将当前字符对应的数值从结果变量。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。否则,就是正常的罗马数字组合情况,将当前字符对应的数值累加到。,利用字符的 ASCII 码差值作为数组索引,将罗马数字中用到的字符(循环遍历字符串中的每个字符。

2401_89122881的博客 1671

Leetcode 13.罗马数字转整数

例如,对于罗马数字 IX ,先遇到 I (值为 1 ),后遇到 X (值为 10 ),当遇到 X 时,由于 X 的值大于 I ,根据规则 I 应该被减去(即 10 - 1 = 9 )。- 如果 preNum 小于 num ,说明当前字符代表的数值比前一个字符代表的数值大,按照罗马数字的规则,应该减去前一个数值(例如 IV , I 应该被减去)。例如,对于罗马数字 III ,在循环中,每次处理一个 I 时,会将其值加到 sum 中,但最后一个 I 对应的整数值在循环结束时还没有被处理。

Bluetooth730的博客 874

力扣13.罗马数字转整数

若存在小的数字在大的数字左边的情况,根据规则需要减去小的数字。对于这种情况,我们也可以将每个字符视作一个单独的值,若一个数字右侧的数字比它大,则将该数字的符号取反。通常情况下,罗马数字中小的数字在大的数字的右边。若输入的字符串满足该情况,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值即可。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。通常情况下,罗马数字中小的数字在大的数字的右边。(10) 的左边,来表示 4 和 9。关于罗马数字的详尽书写规则,可以参考。

2301_80060263的博客 875

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的博客 860

Python描述 LeetCode 13.罗马数字转整数

Python描述 LeetCode 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 写做

一起加油 1313

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

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

2403_85911068的博客 754

Leetcode 13. 罗马数字转整数

通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。然后从左到右遍历每个字符,如果 s[i] < s[i+1],就将结果减去 s[i] 代表的数字;只有在遇到特殊情况时,两个字符中左边的字符小于右边的字符,且等于右边的字符代表的数减左边字符代表的数。解释: M = 1000, CM = 900, XC = 90, IV = 4.罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。输入: s = “IV”

li_yizhixiaowukong的博客 792
上一篇: 【字符串】1374. 生成每种字符都是奇数个的字符串(简单)
下一篇: 【字符串】1189. “气球” 的最大数量(简单)
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值