【LeetCode】整数转罗马数字 [M](模拟)

news/2024/12/5 6:57:11/

12. 整数转罗马数字 - 力扣(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:

输入: num = 3
输出: "III"

示例 2:​​​​​​​

输入: num = 4
输出: "IV"

示例 3:​​​​​​​

输入: num = 9
输出: "IX"

提示:

  • 1 <= num <= 3999

二、代码

class Solution {public static String intToRoman(int num) {// 提前打表,准备下面这么多就够了String[][] c = { { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" },{ "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" },{ "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" },{ "", "M", "MM", "MMM" } };StringBuilder roman = new StringBuilder();// 因为题目说了给ide给的num不会超过3999,所以下面准备四位数就够了roman.append(c[3][num / 1000 % 10])  // 如果压根就没有千位,除以1000就会得0,0下标在前面打表的数组对应的都是空字符串,所以就相当于什么都没加入.append(c[2][num / 100 % 10]).append(c[1][num / 10 % 10]).append(c[0][num % 10]);return roman.toString();}
}

三、解题思路 

罗马数字没有0。如果前一个字符比后一个字符小,那么前一个字符就代表负数。题目说不会超过3000多,所以可以提前打表。


http://www.ppmy.cn/news/5150.html

相关文章

设计模式概述之原型模式(六)

常说的设计模式是23种设计模式&#xff0c;分为3大类&#xff1a; 创建型模式5种&#xff1a;工厂方法、抽象工厂、单例、建造者、原型结构型模式7种&#xff1a;适配器、代理、桥接、装饰者、外观、享元、组合行为型模式11种&#xff1a;模板方法、解释器、策略、观察者、迭代…

【数据结构】树和二叉树

半山腰很挤&#xff0c;你得去山顶看看 目录 1.树 1.1 树的概念 1.2 树的特征 1.3 树每个结点的关系 1.4 树的表示形式 2.二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的基本操作 2.5.1 判断二叉树是否为空 2.…

手撕红黑树的构建与验证

上篇文章我们介绍了AVL树的构建与适用场景&#xff0c;我们知道了AVL树虽然查找效率很高&#xff0c;但是不适合频繁插入或删除的场景。为了解决这个问题又诞生了新的数据结构&#xff1a;红黑树 那么本篇文章就着重介绍红黑树的性质与如何构建。 1.红黑树的性质 1.结点颜色非黑…

三子棋超详细解说,人机大战,PVP玩家对战

目录 &#x1f412;三子棋的基本功能构思 &#x1f40e; STEP 1 : 设计游戏菜单 &#x1f40e; STEP 2 : 初始化游戏棋盘 &#x1f40e; STEP 3 : 游戏功能函数的封装 &#x1f406;功能一&#xff1a;人机对战 &#x1f406;功能二&#xff1a;PVP玩家对战 &#x1f406;功能三…

RabbitMQ之Exchange(交换机)

目录 一、Exchange简介 二、Exchange(交换机)的类型 1.直连交换机&#xff1a;Direct Exchange 2.主题交换机&#xff1a;Topic Exchange 3.扇形交换机&#xff1a;Fanout Exchange 4、默认交换机 5、Dead Letter Exchange&#xff08;死信交换机&#xff09; 三、交换机…

sentinel-1.8.6 基于生产实践遇到的坑

最近基于sentinel-1.8.6搭建了一套供生产使用。在开发的过程中遇到了一些问题并进行了改造&#xff0c;在此记录一下。 1、http访问支持ip级别限流 如果是基于servlet容器的,可以手动复制com.alibaba.csp.sentinel.adapter.servlet.CommonFilter&#xff0c;自定义一个filter…

Transformer17

还是transformer 这次还是谷歌哈 又在机器人领域发力 谷歌机器人团队等在机器人领域构建了一个多任务 transformer 模型&#xff0c;显著改进了对新任务、环境和对象的零样本泛化。轻松完成700多条指令、成功率达97%&#xff01;谷歌开源机器人领域 我们知道&#xff0c;机器…

MySQL 55题及答案【八】

1.数据库三范式是什么? 1. 第一范式&#xff08;1NF&#xff09;&#xff1a;字段具有原子性,不可再分。(所有关系型数据库系 统都满足第一范式数据库表中的字段都是单一属性的&#xff0c;不可再分) 2. 第二范式&#xff08;2NF&#xff09;是在第一范式&#xff08;1NF&a…