LeetCode字符串题库 之 罗马数字转整数

news2024/11/14 0:53:19

题目链接🔗力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

1. 题目分析

        我们在做题的时候,一定要知道题目的目的是什么,我们可以结合测试用例和提示来看。

我们可以分析以下几点:

1. 每一个罗马数字都对应着一个数值

2. 一般情况:罗马数字是大的在前面,小的在后面,比如MXI = 1000 + 10 + 1 = 1011;

3. 特殊情况:I可以放在V和X的左边:IV = 4        IX = 9;

                        X可以放在L和C的左边:XL = 40        XC = 90;

                        C可以放在D和M的左边:CD = 400        CM = 900;

4. 所以我们写代码的时候要在特殊情况这里专门弄一个条件出来。

2. 做题思路

        因为这是字符串中的每一个字符对应着相应的数值,我们首选switch语句来解答这一问题,下面就是代码:

3. 源代码

int romanToInt(char * s)
{
    char* c = s; //定义一个指针变量来专门用来移动的
    int num = 0; //返回的数值
    //我们用c来遍历这个字符串,当*c为空字符的时候,整个循环结束
    while(*c)
    {
        //我们要判断每一个字符是什么,所以括号里是*c
        switch(*c)
        {
            case 'M':
                num = num + 1000;
        //这里是必须写的,如果不写break,会继续往下走的,写了break就止步到这里,跳出switch语句
                break; 
            case 'D':
                num = num + 500;       
                break; 
        //当是特殊情况的时候,我们就看它下一个是不是那几个情况,是就特殊判断,不是就正常走
            case 'C':
                if(*(c+1) == 'D')
                {
                    num = num + 400;
                    c++;
                }
                else if(*(c+1) == 'M')
                {
                    num = num + 900;
                    c++;
                }
                else
                    num = num + 100;
                break;
            case 'L':
                num = num + 50;
                break;
            case 'X':
                if(*(c+1) == 'L')
                {
                    num = num + 40;
                    c++;
                }
                else if(*(c+1) == 'C')
                {
                    num = num + 90;
                    c++;
                }
                else
                    num = num + 10;
                break;
            case 'V':
                num = num + 5;
                break;
            case 'I':
                if(*(c+1) == 'V')
                {
                    num = num + 4;
                    c++;
                }
                else if(*(c+1) == 'X')
                {
                    num = num + 9;
                    c++;
                }
                else
                    num = num + 1;
                break;
            default:
                break;
        }
        c++;
    }
    return num;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1152845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql server数据库跟踪——SQL Server Profiler解析

工具: SQL Server Profiler这个工具是SQL Server数据库自带的语句执行跟踪工具,常使用于分析软件修改数据库时所执行的语句,适合用来研究软件运行数据库的原理。 打开方式: 本机安装了SQL server的话,都是自带的。直接…

MySQL中,当update修改数据与原数据相同时会再次执行吗?

一、背景 本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗? 二、测试环境 MySQL5.7.25 Centos 7.4 三、binlog_format为ROW 1、参数 2、测试步骤 session1 session2 ses…

优优嗨聚集团:绝味鸭脖市值上升,餐饮业迎来新变革

导语:绝味鸭脖作为中国餐饮行业的领军企业,其市值上升不仅体现了企业的市场价值,更对整个餐饮行业产生了深远的影响。本文将探讨绝味鸭脖市值上升对餐饮行业的影响,以及未来餐饮行业的发展趋势。 一、绝味鸭脖市值上升&#xff0c…

【Docker】Linux路由连接两个不同网段namespace,连接namespace与主机

如果两个namespace处于不同的子网中,那么就不能通过bridge进行连接了,而是需要通过路由器进行三层转发。然而Linux并未像提供虚拟网桥一样也提供一个虚拟路由器设备,原因是Linux自身就具备有路由器功能。 路由器的工作原理是这样的&#xff…

编程实例:农资进销存管理系统软件,支持扫描二维码追溯码

编程实例:农资进销存管理系统软件,支持扫描二维码追溯码 软件支持扫码农资商品的追溯码,二维码。 软件部分功能: 商品信息管理 进货管理 销售管理 库存管理 编程系统化课程总目录及明细,零基础学编程视频教程&…

英码科技成功入选《2023边缘计算产业图谱》两大细分领域

近日,业界知名的边缘计算行业研究机构发布了《2023边缘计算产业图谱》,展示了全球边缘计算产业的最新发展态势和前景。在本次发布的图谱中,英码科技作为边缘计算领域的领先者,成功入选边缘计算一体机和智能终端两大细分领域&#…

钡铼技术X86工控机在控制和通信任务中的优势

X86工控机是一种基于x86架构的工业控制计算机。x86是一种常见的处理器架构,广泛应用于个人电脑和服务器领域。在工业自动化领域,x86架构的处理器和相应的工控机广泛应用于工业控制和监控系统。 x86工控机通常具有以下特点: 处理能力强大&am…

电脑不显示桌面?盘点4个正确操作!

“我的电脑一打开后完全加载不出来桌面,现在我也不知道怎么办,有没有比较了解电脑的大佬可以分享一下经验呀?” 有时候我们使用电脑时可能会遇到桌面上所有的应用程序都消失了甚至桌面不显示的情况。如果电脑不显示桌面我们可能就很难进行下一…

标配率破8成,新能源车2025年全面标配!哪些OTA供应商正在领跑

伴随着汽车智能化的加速渗透,软件在线升级(OTA)也在快速实现从基于软件层的SOTA ,到硬件层的FOTA的全面普及。 其中,在行业内,SOTA普遍是指车辆软件应用层的升级,通过网络将文件从云端服务器下…

众和策略:营收净利双增显韧性 超百亿分红创新高

Choice数据闪现,到10月30日晚8点,沪深北交易所共有5219家A股公司三季报“交卷”。其间,4188家公司盈利,占比八成以上。 消费赛道复苏最为显着,多家上市公司营收、净利润大幅双增;新动力、轿车等赛道亦接连…

MATLAB中perceptron函数用法

目录 语法 说明 示例 使用感知器求解简单分类问题 perceptron函数的功能是简单的单层二类分类器。 语法 perceptron(hardlimitTF,perceptronLF) 说明 注意 Deep Learning Toolbox™ 支持早期形式的感知器。为了获得更好的结果,您应改用 patternnet&#xff0…

影响因素分析玩出新花样,不一样的轨迹模型发一区文章

郑老师统计课程,欢迎点击报名:孟德尔随机化课程即将开班!! 2023年3月,外国学者在《Age Ageing》(一区,IF6.7)发表题为:" Eight-year longitudinal falls trajectori…

GameGPT:使用AI实现游戏开发自动化

使用多代理基于AI开发游戏的这种方法果真切实可行吗?如今,从事游戏开发如同走钢丝。游戏行业处于一种怪异的境地:游戏变得越来越酷,越来越有开创性,但同时也变得越来越让人头疼:更大的团队、更长的工作时间…

JVS-BI数字大屏设计器:一站式解决方案

数字大屏介绍 数字大屏是当下数据展示、业务监控、指挥调度常见的业务表达形态,常有可视化的图表、效果装饰、事件操作等技术组成酷炫的效果展示。 配置入口 进入JVS-BI(bi.bctools.cn),进入大屏页面,如下图所示 ①…

少儿编程 2023年9月中国电子学会图形化编程等级考试Scratch编程四级真题解析(选择题)

2023年9月scratch编程等级考试四级真题 选择题(共25题,每题2分,共50分) 1、角色为一个紫色圆圈,运行程序后,舞台上的图案是 A、 B、 C、 D、 答案:A

springboot集成swagger3以及美化调试

实现效果如下&#xff1a; http://localhost:9999/doc.html#/ http://localhost:9999/swagger-ui/index.html#/ 代码开始&#xff1a; 一 引入pom <!-- swagger接口文档 --> <dependency><groupId>io.springfox</groupId><artifactId>springf…

Day 4 登录页及路由 (二) -- Vue状态管理

状态管理 之前的实现中&#xff0c;判断登录状态用了伪实现&#xff0c;实际当中&#xff0c;应该是以缓存中的数据为依据来进行的。这就涉及到了应用程序中的状态管理。在Vue中&#xff0c;状态管理之前是Vuex&#xff0c;现在则是推荐使用Pinia&#xff0c;在脚手架项目创建…

【年终特惠】全流程HEC-RAS 1D/2D水动力与水环境模拟技术案例实践及拓展应用

水动力与水环境模型的数值模拟是实现水资源规划、环境影响分析、防洪规划以及未来气候变化下预测和分析的主要手段。然而&#xff0c;一方面水动力和水环境模型的使用非常复杂&#xff0c;理论繁复&#xff1b;另一方面&#xff0c;免费的水动力和水环境软件往往缺少重要功能&a…

什么是神经网络,它的原理是啥?(2)

参考&#xff1a;https://www.youtube.com/watch?vmlk0rddP3L4&listPLuhqtP7jdD8CftMk831qdE8BlIteSaNzD 视频3&#xff1a;什么是激活函数&#xff1f;为什么我们需要激活函数&#xff1f;它的类型有哪些&#xff1f; 为什么需要激活函数&#xff1f;如果没有激活函数&…

无品牌国产PLC模块调试说明

地址30001对应的aiw9 30002对应aiw10 30003 aiw11 30004 aiw12 模块接线及拨码全部向下&#xff0c;对应的DeviceID为15地址 使用串口线链接的时候a要接b0 b接a0 要反着接才能有数据