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

题目链接🔗力扣(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){//我们要判断每一个字符是什么,所以括号里是*cswitch(*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++;}elsenum = 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++;}elsenum = 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++;}elsenum = num + 1;break;default:break;}c++;}return num;
}

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

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

相关文章

Linux 目录

目录 1. Linux 目录1.1. 目录 /usr/bin 和 /usr/local/bin 区别 1. Linux 目录 1.1. 目录 /usr/bin 和 /usr/local/bin 区别 /usr/bin 下面的都是系统预装的可执行程序, 系统升级有可能会被覆盖。/usr/local/bin 目录是给用户放置自己的可执行程序。

物联网系统的基本构件

1.基本组件 云服务器 数据库消息服务器应用服务器管理平台 云APP 云服务器的维护终端微信客户端网页管理平台 页面式的更全面的管理。组态软件和PLC软件 编程软件终端设备 PLC 主要指标,模拟数字接口数量 DO有 继电器和1.5,2.5.5V数字输出一般支持扩展IO模块模拟量…

C++设计模式_25_Interpreter 解析器

Interpreter 解析器被归为“领域规则”模式。Interpreter模式比较适合简单的文法表示,应用场景是比较有限的,解决问题的思路和场景都是一样的。 文章目录 1. “领域规则”模式1.1 典型模式2. 动机( Motivation)3. 代码演示Interpreter 解析器模式4. 模式定义5. 结构( Structu…

目标检测:Proposal-Contrastive Pretraining for Object Detection from Fewer Data

论文作者:Quentin Bouniot,Romaric Audigier,Anglique Loesch,Amaury Habrard 作者单位:Universit Paris-Saclay; Universit Jean Monnet Saint-Etienne; Universitaire de France (IUF) 论文链接:http://arxiv.org/abs/2310.16835v1 内容…

视频列表:点击某个视频进行播放,其余视频全部暂停(同时只播放一个视频)

目录 需求实现原理实现代码页面展示 需求 视频列表:点击某个视频进行播放,其余视频全部暂停(同时只播放一个视频) 实现原理 在 video 标签添加 自定义属性 id (必须唯一)给每个 video 标签 添加 play 视频播放事件播放视频时&…

Ha-NeRF源码解读 train_mask_grid_sample

目录 背景: (1)Ha_NeRF论文解读 (2)Ha_NeRF源码复现 (3)train_mask_grid_sample.py 运行 train_mask_grid_sample.py解读 1 NeRFSystem 模块 2 forward()详解 3 模型训练tranining_st…

JavaScript设计模式之发布-订阅模式

发布者和订阅者完全解耦(通过消息队列进行通信) 适用场景:功能模块间进行通信,如Vue的事件总线。 ES6实现方式: class eventManager {constructor() {this.eventList {};}on(eventName, callback) {if (this.eventL…

[common c/c++] ring buffer/circular buffer 环形队列/环形缓冲区

前言: ring buffer / circular buffer 又名环形队列 / 环形缓冲区,其通过开辟固定尺寸的内存来实现反复复用同一块内存的目的。由于预先开辟了固定尺寸的内容,所以当数据满的时候,可以有两种处理方式,具体使用哪一种按…

HCL模拟器综合实验案例(2)

本案例提供给计算机网络专业学生以及参加新华三杯的同学进行学习 题目 由于公司并购前的历史原因导致双方使用不同的 OSPF 进程,经由总部技术部统一规划后再做调整,现阶段使用暂时过渡方案,即使用静态路由、OSPF、RIP、BGP多协议组网&#x…

协同办公系统:企业提质增效的利器

随着科技的不断发展,企业对于提高工作效率、优化管理流程、降低成本的需求日益迫切。协同办公系统应运而生,成为了许多企业提质增效的利器。那么,协同办公系统究竟是如何帮助企业实现这些目标的呢?本文将从以下几个方面进行详细阐…

【CSS】样式的计算过程

标签的 CSS 样式 现在有这么一段 HTML 代码&#xff1a; <div class"test"><h1>Hello World</h1> </div>目前我们没有给 h1 设置任何样式&#xff0c;可以看到 h1 自带了一些样式&#xff0c;eg&#xff1a;font-size、font-weight、margi…

微信小程序快速备案的通道揭秘方法

随着国家政策的调整&#xff0c;微信小程序备案已变得刻不容缓。传统备案路径较为繁琐&#xff0c;耗时较长&#xff0c;为解决此痛点&#xff0c;今天我们将揭示一个快速备案的新通道。 步骤1&#xff1a;探索智慧助手 打开微信&#xff0c;探索“智慧商家服务助手”公众号。…

NProgress顶部进度条的用法

大家打开一个网页的时候&#xff0c;会看到一个进度条&#xff0c;然后加载完成后进度条就消失了。这个呢&#xff0c;就是一个第三方的进度条库&#xff0c;叫做nprogress. 1.首先安装nprogress(咱直接用npm安装了) : npm install --save nprogress 2.然后在 router/index.j…

编译支持GPU的opencv,并供python的import cv2调用

下载opencv和opencv_contrib&#xff0c;cmake过程中要下载的一些包可以手动下载配置&#xff0c;如果网络较好&#xff0c;也可以等待自动下载。主要记录的是cmake命令&#xff1a; cmake -D CMAKE_BUILD_TYPERELEASE \-D BUILD_opencv_python3YES \-D CMAKE_INSTALL_PREFIX/…

Mac允许任何来源的的安装包进行安装

首先打开终端&#xff0c;开启“任何来源”&#xff0c;执行如下命令&#xff1a; sudo spctl --master-disable 然后回车&#xff0c;继续输入密码&#xff08;密码输入时是不可见的&#xff09;&#xff0c;然后回车。 接着打开【系统偏好设置】&#xff0c;选择【安全性与…

MySQL(6):多表查询

多表查询&#xff0c;也称为关联查询&#xff0c;指两个或更多个表一起完成查询操作。 前提条件&#xff1a; 这些一起查询的表之间是有关系的&#xff08;一对一、一对多&#xff09;&#xff0c;它们之间一定是有关联字段&#xff0c;这个关联字段可能建立了外键&#xff0c;…

CSS3盒模型

CSS3盒模型规定了网页元素的显示方式&#xff0c;包括大小、边框、边界和补白等概念。2015年4月&#xff0c;W3C的CSS工作组发布了CSS3基本用户接口模块&#xff0c;该模块负责控制与用户接口界面相关效果的呈现方式。 1、盒模型基础 在网页设计中&#xff0c;经常会听到内容…

Spring Boot 整合 MyBatis Plus

目录 一、初始化演示数据 二、创建应用 二、应用配置 三、实体类 四、Mapper 五、Mapper 映射文件 六、Service 七、Service 层抽象接口 八、配置 Mapper 扫描包 九、在日志中输出 SQL 十、测试 MyBatis Plus 是 MyBatis 框架的一个增强。除了基本的 MyBatis 功能外…

浅谈安科瑞电力监控系统在百事亚洲研发中心的应用

摘要&#xff1a;介绍百事亚洲研发中心&#xff0c;采用智能电力仪表、采集配电现场的各种电参量和开关信号。系统采用现场就地组网的方式&#xff0c;组网后通过现场总线通讯并远传至后台&#xff0c;通过Acrel-2000型电力监控系统实现配电所配电回路用电的实时监控和管理。 …

【AI视野·今日Robot 机器人论文速览 第六十一期】Tue, 24 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Tue, 24 Oct 2023 Totally 50 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Robot Fine-Tuning Made Easy: Pre-Training Rewards and Policies for Autonomous Real-World Reinforcement Learning Autho…