13. 罗马数字转整数【 力扣(LeetCode) 】
一、题目描述
罗马数字包含以下七种字符: 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.
三、解题思路
- 基本思路:
遍历罗马数字,对于每一个罗马数字来说,只要比后一位的罗马数字小,那他的值就应该是取反,否则,就是正常,然后累加。 - 具体思路:
- 预处理:将在罗马数字末尾添加字符
'#',防止最后一个罗马数字比较时越界;定义映射 V ,用于映射罗马数字和其值,定义变量 num ,用于计算罗马数字的累加值。 - 遍历罗马数字:判断当前罗马数字与后一位罗马数字的值的大小,如果大,则 num 加上当前罗马数字的值,否则,减去当前罗马数字的值。
- 预处理:将在罗马数字末尾添加字符
四、参考代码
时间复杂度: O ( n ) \Omicron(n) O(n)
空间复杂度: O ( 1 ) \Omicron(1) O(1)
#include <map>
class Solution {
public:int romanToInt(string s) {int n = s.length();s = s + '#';map<char, int> V = {{'#', 0}, {'I', 1}, {'V', 5}, {'X', 10},{'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}};int num = 0;for (int i = 0; i < n; i++) {if (V[s[i]] < V[s[i + 1]]) {num -= V[s[i]];} else {num += V[s[i]];}}return num;}
};
相关文章:
13. 罗马数字转整数【 力扣(LeetCode) 】
一、题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符数值字符数值I1V5X10L50C100D500M1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X…...
0CTF/TCTF 2023 OLAPInfra Nashorn RCE + HDFS UDF RCE
前置知识 ClickHouse:是一个开源的列式数据库管理系统 clickhouse-jdbc-bridge:clickhouse数据库和jdbc交互的工具 HDFS(Hadoop Distributed File System):专为大数据存储和处理而设计。 审计 <?php error_re…...
Studying-代码随想录训练营day56| 108.冗余连接、109.冗余连接II
第56天,图论06,并查集题目类型冗余连接(ง •_•)ง💪,编程语言:C 目录 108.冗余连接 109.冗余连接II 总结 108.冗余连接 文档讲解:手撕冗余连接 题目:108. 冗余连接 (kamacoder.com) 学习&…...
基于springboot+vue+uniapp的智慧物业平台小程序
开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...
MATLAB霍夫曼表盘识别系统
MATLAB霍夫曼表盘识别系统 一、介绍 本设计为基于MATLAB的表盘指针识别,算法原理是基于hough变换。可检测压力表,石英手表,电表刻度,气压表等带指针刻度的表盘。通过hough检测直线和圆的关系,得出指针夹角࿰…...
Python | Leetcode Python题解之第322题零钱兑换
题目: 题解: class Solution:def coinChange(self, coins: List[int], amount: int) -> int:dp [float(inf)] * (amount 1)dp[0] 0for coin in coins:for x in range(coin, amount 1):dp[x] min(dp[x], dp[x - coin] 1)return dp[amount] if d…...
python中类class的魔法方法
开始介绍之前,我们先看下之前文章我们介绍过的内置类merryview的一些方法,如下图所示: 有很多双下划线开始和结束的method,这么多method是做啥子用的呢? 其实这些方法就是我们常说的魔法方法,也是python中的…...
计算机体系结构和计算机组成原理的区别
如何理解计算机体系结构和计算机的组成?哪个对计算机的性能更重要?说明理由 目录 计算机体系结构 计算机组成 二者区别 哪个对性能更重要 计算机体系结构 计算机体系结构是指根据属性和功能不同而划分的计算机理论组成部分及计算机基本工作原理、理论…...
MySQL--数据库备份
前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、为什么要备份 备份:能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。 冗余&#…...
influxDB的常用命令
目录 1.查看数据库命令 2.进入某数据库命令 3.创建表的命令 (host 和region 字段是必须的) 4.显示所有的表命令 5. 删除表 6.查询表数据 7.显示数据库用户 8.创建用户 9.创建管理员用户 10.修改密码(密码用单引号括住,不要用双引号) 11. 分配数据库访问权…...
使用 1panel面板 部署 springboot 和 vue
代码仓库:还没弄 目录 网站介绍安装步骤1. 准备云服务器2. 准备域名(可跳过)3. 安装1panel面板4. 服务器开放端口5. 进入1panel面板6. 安装并启动软件(服务器和面板开放端口)7. 打包并上传项目7.1 打包 Java项目&#…...
快速体验LLaMA-Factory 私有化部署和高效微调Llama3模型(曙光超算互联网平台异构加速卡DCU)
序言 本文以 LLaMA-Factory 为例,在超算互联网平台SCNet上使用异构加速卡AI 显存64GB PCIE,私有化部署Llama3模型,并对 Llama3-8B-Instruct 模型进行 LoRA 微调、推理和合并。 快速体验基础版本,请参考另一篇博客:快…...
Cocos Creator 3.8.x bundle设置最佳方案
A: 项目开始场景(Start Scene)加载显示最快的Bundle设置方案:不要使用resources文件夹,除了项目开始场景(Start Scene)所在文件夹,将所有文件分类设置成Bundle; B: A方案较为麻烦,项目文件夹多时…...
【论文笔记】4D Millimeter-Wave Radar in Autonomous Driving: A Survey
原文链接:https://arxiv.org/abs/2306.04242 I. 引言 传统毫米波雷达(3D毫米波雷达)测量俯仰角的能力有限,数据通常仅包括距离、水平角和多普勒速度信息。此外,3D雷达数据存在噪声且分辨率低(尤其是水平角…...
搭建 Rancher 服务,配置k8s集群
1. 前提条件 前提条件: 安装docker,要求版本各节点版本一致。网上还有额外的要求:关闭swap、禁用selinux等等。 2. 搭建 Rancher 服务 直接通过docker命令实现即可,很方便。 docker run -d \--name rancher \--restart unles…...
数据恢复的定制之旅:打造SQL Server的专属恢复方案
数据恢复的定制之旅:打造SQL Server的专属恢复方案 在企业运营中,数据的安全性和可靠性是至关重要的。SQL Server作为企业级数据库解决方案,提供了多种数据恢复技术以应对不同的数据丢失场景。然而,面对特定的业务需求和复杂的数…...
Javascript常见算法详解
在JavaScript(JS)中,常见的算法涵盖了多个领域,从基础的数组操作到更复杂的排序、搜索和数据结构算法。下面是一些在JS中常见的算法示例: 1. 排序算法 Java排序算法-CSDN博客 冒泡排序(Bubble Sort&#x…...
MySQL数据管理 - 查询语句
文章目录 查询数据1 查询指定列2 条件查询3 合并查询4 模糊查询5 聚合函数查询6 对值进行排序7 分组查询8 分页查询9 数据库关联查询1 内连接 INNER JOIN2 LEFT JOIN3 右连接 10 数据库子查询参考 查询数据 数据库最常用的操作就是查询,也是数据操作的基础…...
经典图论算法回顾之Bellman-Ford算法
Dijkstra最短路径算法存在的一个问题是不能处理负权图(详见:经典图论算法回顾之Dijkstra算法。今天要回顾的Bellman-Ford算法(wikipedia:Bellman–Ford algorithm)可以求出有负权图的最短路径,并可以对最短…...
LinuxC++(10):调用可执行程序
认识system函数 可以直接用system在代码中实现调用shell命令 /bin/ls -l /tmp表示执行ls -l命令,打开/tmp地址 而前面的/bin/表示这是shell命令,不可少,可以认为,/bin/后面的就是等价于shell里面输入的命令。 然后,cou…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
C++--string的模拟实现
一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...
