C++ 之LeetCode刷题记录(三)

😄😊😆😃😄😊😆😃

开始cpp刷题之旅,多学多练,尽力而为。

先易后难,先刷简单的。

在这里插入图片描述

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:

输入: s = “III”
输出: 3
示例 2:

输入: s = “IV”
输出: 4
示例 3:

输入: s = “IX”
输出: 9
示例 4:

输入: s = “LVIII”
输出: 58
解释: L = 50, V= 5, III = 3.
示例 5:

输入: s = “MCMXCIV”
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.

方法: 倒序相加

先创建一个unordered_map,存入对应的key、value。

创建一个temp存入当前值,再判断前一个值与后一个值大小关系,如果前一个值小于后一个值,就减去前一个值,否则就加上前一个值。这样遍历即可得到正确答案。

当然其中有一些细节,三元运算符这里要使用小于做判断。是为了避免前后相等这种情况,这种情况是要判断为加的。

class Solution {
private:unordered_map<char,int> List= {{'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000}};public:int romanToInt(string s) {int length= s.length();int sum=0;int temp=0;for(int i=length-1;i>=0;i--){int currNum=List[s[i]];currNum<temp?sum-=currNum:sum+=currNum;   这里用小于temp,是因为III这种情况,是要加的,如果使用>做判断,会报错。temp=currNum;}return sum;}
};

OK,到此结束,工作再忙,但也要坚持每天一题。

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

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

相关文章

Linux 线程概念

文章目录 前言线程的概念线程的操作操作的原理补充与说明 前言 ① 函数的具体说明被放在补充与说明部分 ② 只说些基础概念和函数使用 线程的概念 网络回答&#xff1a;Linux 线程是指在 Linux 操作系统中创建和管理的轻量级执行单元。线程是进程的一部分&#xff0c;与进程…

K8s实战-init容器

概念&#xff1a; 初始化容器的概念 比如一个容器A依赖其他容器&#xff0c;可以为A设置多个 依赖容易A1&#xff0c;A2&#xff0c;A3 A1,A2,A3要按照顺序启动&#xff0c;A1没有启动启动起来的 话&#xff0c;A2,A3是不会启动的&#xff0c;直到所有的静态容器全 部启动完毕…

编译错误:C4056E type of input file ‘xxx‘ unknown

最近在Proteus上面进行仿真&#xff0c;将编译后的hex文件导入到电路图中&#xff0c;进行程序运行的时候&#xff0c;Proteus报了这么一个错误&#xff1a;Error: C4065E: type of input file Pian unknown 我上网一搜&#xff0c;好像与文件名称中存在空格有关&#xff0c;导…

Mybatis枚举类型处理和类型处理器

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 文章目录 专栏精选摘要引言正文枚举类型映射简单枚举映射枚举顺序映射复杂枚举映射 类型处理器 总结 摘要 在这篇…

CNN实现对手写字体的迭代

导入库 import torchvision import torch from torchvision.transforms import ToTensor from torch import nn import matplotlib.pyplot as plt 导入手写字体数据 train_dstorchvision.datasets.MNIST(data/,trainTrue,transformToTensor(),downloadTrue) test_dstorchvis…

CSDN被关注自动回复消息怎么设置

CSDN被关注自动回复消息怎么设置 1.鼠标移动到头像 2.点击内容管理 3.拉到下面&#xff0c;看到工具目录&#xff0c;里面有个粉丝服务点击 4.点击自动回复 5.这里点击打开&#xff0c;选择被关注自动回复&#xff0c;设置文字或图片点击保存就好了

SDRAM小项目——uart发送模块

数据的输入&#xff1a; 数据的输入是uart接收模块的输出&#xff1a;串—并—串&#xff08;接收到的外部的串行数据进入内部寄存器转化为并行数据&#xff0c;再由内部寄存器读出&#xff0c;输出表现为串行数据&#xff09;&#xff0c;接收到的输入信号为tx_flag&#xff0…

【机组期末速成】计算机的运算方法|进制转换|无符号数与有符号数|数的定点表示与浮点表示|定点运算

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;计算机组成原理&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 目录 前言&#xff1a; 一、本章考点总览 二、考点分析 1、日常我们采用十进制来表示数据&#xff0c;计算机如何表示&#xf…

24、Qt使用QCustomPlot

一、下载文件 进入官网&#xff0c;选择“Download”、QCustomPlot.tar.gz Qt Plotting Widget QCustomPlot - Download 二、创建项目 创建一个"Qt Widget Application"项目&#xff0c;基类选择“QMainWindow”&#xff0c;把刚才下载的压缩包里的“qcustomplot.…

K8S网络类型

k8s的网络类型 k8s的通信模式 1 pod内部之间容器与容器之间的通信&#xff0c;在同一个pod中容器是共享资源和网络&#xff0c;使用同一个网络命名空间&#xff0c;可以直接通信 2 同一个node节点之内&#xff0c;不同pod之间的通信&#xff0c;每个pod都有一个全局的真实ip地…

美国Top科技公司年薪大曝光,OpenAI 600万高居榜首!

全美顶尖AI公司年薪大曝光&#xff01; OpenAI 600万高居榜首&#xff0c;微软、英伟达只有OpenAI 的一半。 近日&#xff0c;美国一家帮助博士生协商薪资的公司Rora发布了一份薪资报告&#xff0c;公布了这些顶尖AI公司给研究人员开出的平均薪水。 以下是部分顶级AI公司的名…

数据结构和算法-B树(B树的查找 B树的最大高度和最小高度)

文章目录 回顾&#xff1a;二叉查找树五叉查找树如何查找查找成功查找失败如何保证查找效率 B树B树的高度小结 回顾&#xff1a;二叉查找树 五叉查找树 进一步对范围划分&#xff0c;处于不同划分进入不同子树 四个数做划分&#xff0c;此时有五个区间 此时一个节点对应多个关…