Leetcode 13. 罗马数字转整数(关于枚举)

2023-11-17

罗马数字包含以下七种字符: 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 到 3999 的范围内。

示例 1:

输入: "III"
输出: 3

示例 2:

输入: "IV"
输出: 4

示例 3:

输入: "IX"
输出: 9

示例 4:

输入: "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.

示例 5:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/roman-to-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

笔记

直接来吧,思路有的话,这道题的实现起来极其简单。
但最关键的就是没思路,有的解法两两字符一组写出所有可能,我去,真tm蠢爆了。
按照题目的描述,可以总结如下规则:

罗马数字由 I,V,X,L,C,D,M 构成;
当小值在大值的左边,则减小值,如 IV=5-1=4;
当小值在大值的右边,则加小值,如 VI=5+1=6;
由上可知,右值永远为正,因此最后一位必然为正。
一言蔽之,把一个小值放在大值的左边,就是做减法,否则为加法。

作者:donespeak
链接:https://leetcode-cn.com/problems/roman-to-integer/solution/yong-shi-9993nei-cun-9873jian-dan-jie-fa-by-donesp/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

如何实现枚举

实际开发中可能写个枚举类更好,但是写个算法还是算了。
两种思路,一种利用HashMap<K,V>自己put进去。
另一种写个函数,switch判断 返回对应值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode 13. 罗马数字转整数(关于枚举) 的相关文章

随机推荐

  • Python数据分析--读取npz文件

    使用pycharm的朋友们 需要在解释器来安装相应库 有想练手的朋友 用百度网盘 链接 https pan baidu com s 1aOTPRsqkgX4isGDhMjLdlQ 提取码 1234 国民生产总值案例 读取npz文件 第一步
  • caffe SigmoidLayer 学习

    SimgoidLayer 的定义 neuron layer h template
  • 一文教你如何编写测试用例

    一 通用测试用例八要素 1 用例编号 2 测试项目 3 测试标题 4 重要级别 5 预置条件 6 测试输入 7 操作步骤 8 预期输出 二 具体分析通用测试用例八要素 1 用例编号 一般是数字和字符组合成的字符串 可以包括 下划线 单词缩写
  • 【学习笔记】 pytorch的使用语法和代码实例

    数据类型 1 torch FloatTensor 用于生成数据类型为浮点型的Tensor 传递给torch FloatTensor的参数可以是一个列表 也可以是一个维度值 torch randn 用于生成数据类型为浮点型且维度指定的随机Te
  • Java解析cron表达式实战

    目录 前言 实战 依赖 code 执行结果 前言 前面讲了CentOS中安装crontab以及cron表达式的规则说明 在实际开发中我们经常会用到 有时候我们懒得记规则的时候 我们就会用一些工具网站去解析 例如我常用的 https www
  • Vulhub靶场环境搭建

    在Ubantu系统上搭建靶场环境 一 ubantu系统准备 1 更新安装列表 sudo apt get update 2 安装docker io sudo apt install docker io 查看是否安装成功 docker v 3
  • Centos二进制安装Geth以太坊客户端

    环境准备 yum install git yum install golang 获取二进制包 网站 https geth ethereum org downloads wget https gethstore blob core windo
  • spring 5.x 系列第9篇 —— 整合mongodb (xml配置方式)

    一 项目说明 1 1 项目结构 配置文件位于 resources 下 项目以单元测试的方式进行测试 1 2 相关依赖 除了 Spring 的基本依赖外 需要导入 MongoDB 的整合依赖
  • JSON使用示例

    1 什么是json JSON 说白了就是JavaScript用来处理数据的一种格式 这种格式非常简单易用 JSON支持的语言非常多 包括JavaScript C PHP Java等等 这是由于JSON是独立于语言的轻量级的数据交换格式 2
  • webpack性能优化,CDN内容分发分发网络

    CDN英文全称Content Delivery Network 中文翻译即为内容分发网络 当用户输入url后 首先向LDNS 本地DNS 发起域名解析请求 LDNS检查缓存中是否有该url的IP地址记录 如果有 则直接返回给用户 如果没有
  • MongoDB入门

    MongoDB MongoDB相关概念 业务应用场景 传统的关系型数据库 如MySQL 在数据操作的 三高 需求以及应对Web2 0的网站需求面前 显得力不从心 解释 三高 需求 High performance 对数据库高并发读写的需求
  • (十六)ADC转换实验

    本节主要是回顾有关于ADC的对应内容 我们这章通过一个AD芯片xpt2046来读取外部电压的变化 将电压的数字量显示在数码管上 关于ADC 我们都知道单片机内部都是数字量 就是1或者0 而我们的电流电压在传递的时候是模拟量 也就是模拟量很可
  • 由于找不到 libmmd.dll,无法继续执行代码。试试替换libmmd.dll文件可能会解决此问题

    由于找不到 libmmd dll 无法继续执行代码 重新安装程序可能会解决此问题 解决方法 1 右键桌面快捷图标 打开文件所在的位置 在这个文件夹下搜索libmmd dll 2 将搜索出来的libmmd dll复制到MAXSON下的CINE
  • NLTK Downloader出现 [Error 11004]getaddrinfo failed的错误时怎么解决

    当打开NLTK下载器时 弹出 Error 11004 getaddrinfo failed的提示窗口 打开NLTK下载器 import nltk nltk download 出现这样的问题时要怎么解决 很多人都走错了思路导致浪费了不少时间在
  • 音视频开发基础概述 - PCM、YUV、H264、常用软件介绍

    前言 相对而言 音视频开发算是有些门槛的 记得我第一次接触的时候 看别人的博客都看不懂 特别是写代码的时候 非常痛苦 只能抄别人的代码 却不知道为什么要这么写 也不知道应该怎么调整 后来总结了一下 痛苦的原因是在写代码之前没有掌握相关的基础
  • 【2023最新版】Windows11家庭版:安卓子系统(WSA)安装及使用教程【全网最详细】

    目录 一 准备工作 1 检查虚拟化功能 2 找到 Wndows功能 3 启用Hyper V和虚拟机平台 4 家庭版安装Hyper V 若步骤3找不到Hyper V 二 安装安卓子系统 1 进入开发者选项 2 下载Windows Subsys
  • mmclassification数据集并训练

    mmclassification数据集并训练 1 数据集准备 import numpy as np import os import shutil 生成train txt和val txt train path train train out
  • mvnrepository仓库

    1 查找jodconverter的maven配置 2 打开mvnrepository仓库 https mvnrepository com 输入jodconverter 3 4
  • EFK实战Kibana之查询语法、导出CSV文件、安装插件(持续更新中)

    概述 EFK 是ELK即ElasticSearch Logstash Kibana的升级版 把Logstash替换成Fluentd 实战 查询语法 选择日志索引后 搜索 可以简单的使用 Lucene通用的语法 或使用基于JSON格式Quer
  • Leetcode 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 写