LeetCode 13. Roman to Integer 题解(C++)

13. Roman to Integer [easy] (Python) 题目链接https://leetcode.com/problems/roman-to-integer/题目原文 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 题目翻译给定一个罗马数字,将其转成整数。输入限制在1到3999之 阅读详情

LeetCode 13. Roman to Integer 题解(C++)


题目描述

  • Given a roman numeral, convert it to an integer.
  • Input is guaranteed to be within the range from 1 to 3999.

思路

  • 首先对罗马数字作出两个归纳:
    1.在保证整数是1~3999的范围内时,范围内的每个数字都可以用如下几个罗马数字的基础字符表示,分别为I,V,X,L,C,D,M,每个字符分别对应的数值为1,5,10,50,100,500,1000;
    2.若罗马数字的字符对应的数值大于等于其右边字符对应的数值,则应该加上它自身对应的数值,相反则减去它自身对应的数值。
  • 由上面的归纳,我们需要创建一张罗马数字的基础字符与其相对应的数值的哈希表,这里使用ordered_map实现,之后遍历字符串s,并用上面归纳的第2点为原则进行比较,并加上或减去相应的数值即可。

代码

class Solution 
{
public:
    int romanToInt(string s) 
    {
        unordered_map<char, int> romanToInt;
        romanToInt['I'] = 1;
        romanToInt['V'] = 5;
        romanToInt['X'] = 10;
        romanToInt['L'] = 50;
        romanToInt['C'] = 100;
        romanToInt['D'] = 500;
        romanToInt['M'] = 1000;

        int result = romanToInt[s[s.size() - 1]];
        for (int i = s.size() - 2; i >= 0; --i)
        {
            if (romanToInt[s[i]] >= romanToInt[s[i + 1]])
            {
                result += romanToInt[s[i]];
            }
            else
            {
                result -= romanToInt[s[i]];
            }
        }
        return result;
    }
};
C++ 罗马数字转整数(Roman to Integer) 罗马数字包含以下七种字符: 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 。同样地,数 阅读详情

相关推荐

Roman to Integer完整代码

leetcode上Roman to Integer的完整C++代码,已被accepted

Roman to Integer

class Solution { int modern[7]; map mmap; void initmap() { mmap.insert(make_pair('M',0)); mmap.insert(make_pair('D',1)); mmap.insert(make_pair('C',2));

durong123123123的专栏 310

人形机器人专题:人形机器人关节,从Optimus选型看关节的发展

今天分享的是深度研究报告:《(报告出品方:中泰页。

GPT20236688的博客 3224

LeetCode第13题:Roman to Integer(C++)详解

Roman to Integer Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 1...

WangHuanToBeBest 772

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境

目前想要深入学习在Linux,也为了方便编写C/C++程序。Linux的环境里一般自带有c++的编译环境,如果没有安装gcc和g++等编译器也比较便利。但是在虚拟机里用vim编写C++程序又不得劲,因此打算使用vscode远程连接Linux虚拟机进行学习。为了防止自己以后还要再配置,重复踩坑,因此写下这篇博客用做记录。环境:windows11、VMware17、rocky linux9.1 ( 开源的CentOS9 )

m0_56779872的博客 8677

2021年全国职业院校技能大赛高职组网络系统管理赛项

S1 Ruijie(config)#switch virtual domain 1 Ruijie(config-vs-domain)#switch 1 Ruijie(config-vs-domain)#switch 1 priority 150 Ruijie(config-vs-domain)#switch 1 description S1 Ruijie(config-vs-domain)#exit Ruijie(config)#vsl-port Ruijie(config-vsl-port)#po

bfq05234214的博客 1133

【LeetCode013算法/编程练习C++】Roman to Integer //难得击败了80%的人

罗马数字转整数int

朱铭德的博客 1717

2023-2024深度学习框架之争——选pytorch还是tensorflow?

深度学习是人工智能领域的一个重要分支,它利用多层神经网络来模拟人类的学习和推理能力,解决各种复杂的问题,如图像识别、自然语言处理、语音识别、推荐系统等。深度学习框架是一种软件工具,它提供了构建、训练、测试和部署深度学习模型的便利,使得开发者和研究者可以更高效地进行深度学习的开发和应用。目前,市场上有许多不同的深度学习框架,如PyTorch、TensorFlow、Keras、MXNet、Caffe2等,它们各有优劣,适用于不同的场景和需求。

flchen_nchu的博客 6756

闯关leetcode——13. Roman to Integer

leetcode第13题

方亮的专栏 2131

uniapp [安卓苹果App端] - 详细实现PDF预览功能在线预览PDF文档,Uniapp App端实现pdf文件预览在线预览pdf二进制文件流、本地pdf文档、PDF文件地址url路径(解决白屏

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,uniapp在线预览pdf功能,在安卓苹果app平台实现PDF的预览查看,uniappApp端实现pdf文件预览,UNIAPP在线预览PDF文档,Uniappapp在线预览pdf文件流,从后端接口里获取pdf文件如何转成链接预览,预览pdf的插件,uni-app的pdf预览功能,uniapp使用pdf.js插件预览pdf文件,预览pdf白屏没有报错,打开后没反应,打开是空白,加载PDF时发生错误,如

🏆 前端领域优质创作者 1万+

yocto系列讲解[实战篇]54 - 添加Qt5和生成带Qt5的SDK

为了满足读者盆友想看yocto如何添加qt5的需求,今天就开始尝试添加meta-qt5

fulinux的博客 3871

【LeetCode】13. Roman to Integer

Roman numerals are represented by seven different symbols:I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D ...

韩旭051的博客 631

LVGL(lv_table)

LVGL中的lv_table是一个轻量级表格控件,用于显示行列式文本数据。它支持设置单元格内容/样式、行列调整、事件响应等基础功能,适用于参数配置、数据展示等场景。通过API可快速创建表格,设置行列数、填充数据,并自定义对齐方式与样式。但需注意默认无滚动条、行数限制等问题。该控件适合简单表格需求,复杂交互需结合自定义事件处理。

m0_49476241的博客 1262

LeetCode | Roman to Integer

13. Roman to Integer Description Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 5...

Karmen199x的博客 231

(三)UPF之Domain Coverage Relationship(Cover、Equivalent、Independent)

整个Soc架构中一般会存在多个Power Domain,不同的Power Domain之间也存在着一定的Coverage关系。在Cadence工具中,这种。不同的Domain Coverage关系中,各个Domain存在着一定的关联()。

Mr.翟的博客 1424

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode13-Roman to Integer(C++)

Description Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I              &...

PengQ1的博客 358

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【LeetCode】 No.13. Roman to Integer -- Java Version

【LeetCode】 No.13. Roman to Integer -- Java Version

汤姆lazy的优快云博客 727

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

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

leetCode13:Roman to Integer

leetCode算法题:罗马数字转整数。要求: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 一开始看到这道题的时候,发现它的通过率还是蛮高,想着应该还是很简单的。可是发现真正在写代码的时候有很多很多问题出现。差不多花了我

wen_special的博客 330

LeetCode--Roman to Integer

Roman to Integer 1. 题目 Roman numerals are represented by seven different symbols:I,V,X,L,C,DandM. Symbol Value I 1 V 5 X 10 L 50 C ...

Vilin的博客 320

LeetCode T13 Roman to Integer

题目地址: 中文:https://leetcode-cn.com/problems/roman-to-integer/ 英文:https://leetcode.com/problems/roman-to-integer/ 题目描述: Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X

之虎者也的博客 141

LeetCode 13. Roman to Integer

LeetCode 13. Roman to IntegerDescriptionExampleCodeConclusion Description Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V ...

gq__97的博客 161

LeetCode 13. Roman to Integer C语言

给定一个罗马数字,将其转换为整数。输入保证在1到3999的范围内。题目的意思给罗马数字,转成对应的数字,范围从1-3999;补充知识,下图是对应转换规则;不过多的说废话:根据上图我们直接说一下解题思路:1。怎么解析罗马数字,需要我们自己做一些映射这里我写一个方法来做这项工作:int charToInt(char ch); 2。怎么把解析出来的罗马数字计算出来结果;我们需要观察出普遍的规律,才能用程...

wgx23724的博客 724

13. Roman to Integer LeetCode题解

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. Subscribe to see which companies asked this question. 题意: 给定一个罗马数字,将其转换为整数。 输入数

水之如此的专栏 426

【力扣Leetcode题解系列之0012——Integer to Roman 整数转罗马数字】

本文全面解析了将整数转换为罗马数字的算法问题。文章首先介绍了罗马数字的基本规则和特殊减法情况,然后详细讲解了贪心算法的解法思路及其优势。提供了五种编程语言的实现代码,并分析了算法的时间复杂度(O(1))和空间复杂度(O(1))。此外,文章提出了三个扩展题目方向:支持更大范围的转换、实现双向转换以及处理带条件的转换,增加了问题的挑战性。最后说明了该算法在历史研究、排版编号和密码学等领域的实际应用价值。全文内容系统全面,既适合算法初学者理解基础解法,也为进阶学习者提供了扩展思路。

youngerwang的博客 910

Leetcode13 Roman to Integer

leetcode13 roman to Integer

Hobo1992的博客 151

Leetcode【13】 Roman to Integer(Java版)

1、 这道题乍一看情况很复杂,其实除了几种情况,其他都是挨个相加,那么就把特殊情况打包考虑 2、这里用到了Map、Map中的判断包含、以及子串 class Solution { public int romanToInt(String s) { Map<String, Integer> map = new HashMap<>(); ma...

ssjdoudou的博客 6958
上一篇: LeetCode 94. Binary Tree Inorder Traversal 题解(C++)
下一篇: LeetCode 206. Reverse Linked List 题解(C++)
prayyojay
博客等级 码龄10年 4粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值