LeetCode(18)整数转罗马数字【数组/字符串】【中等】

在这里插入图片描述

目录

    • 1.题目
    • 2.答案
    • 3.提交结果截图

链接: 12. 整数转罗马数字

1.题目

罗马数字包含以下七种字符: IVXLCDM

字符          数值
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"

示例 4:

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

示例 5:

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

提示:

  • 1 <= num <= 3999

2.答案

class Solution {public String intToRoman(int num) {int[] nums = {1000, 500, 100, 50, 10, 5, 1};String[] symbols = {"M", "D", "C", "L", "X", "V", "I"};StringBuilder builder = new StringBuilder();for (int i = 0; num > 0 && i < nums.length;) {if (num >= nums[i]) {String numStr = String.valueOf(num);if (numStr.startsWith("9")) {num = numStr.length() > 1 ? Integer.parseInt(numStr.substring(1)) : 0;builder.append(symbols[i + 1]).append(symbols[i - 1]);} else if (numStr.startsWith("4")) {num = numStr.length() > 1 ? Integer.parseInt(numStr.substring(1)) : 0;builder.append(symbols[i]).append(symbols[i - 1]);} else {num -= nums[i];builder.append(symbols[i]);}} else {i++;}}return builder.toString();}
}

3.提交结果截图

在这里插入图片描述

整理完毕,完结撒花~ 🌻

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

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

相关文章

【word密码】word设置只读方式的四个方法

想要将word文档设置为只读模式&#xff0c;方法有很多&#xff0c;今天小奥超人介绍几个方法给大家。 方法一&#xff1a;文件属性 常见的、简单的设置方法&#xff0c;不用打开word文件&#xff0c;只需要右键选择文件&#xff0c;打开文件属性&#xff0c;勾选上【只读】选…

保姆级教程之SABO-VMD-CNN-SVM的分类诊断,特征可视化

今天出一期基于SABO-VMD-CNN-SVM的分类诊断。 依旧是采用经典的西储大学轴承数据。基本流程如下&#xff1a; 首先是以最小包络熵为适应度函数&#xff0c;采用SABO优化VMD的两个参数。其次对每种状态的数据进行特征向量的求取&#xff0c;并为每组数据打上标签。然后将数据送入…

竞赛选题 深度学习的智能中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分&#xff1a;4.2 损失函数&#xff1a;4.3 搭建seq2seq框架&#xff1a;4.4 测试部分&#xff1a;4.5 评价NLP测试效果&#xff1a;4.6 梯度截断…

过滤器模式 rust和java的实现

文章目录 过滤器模式实现 过滤器模式实现javarustjavarust rust代码仓库 过滤器模式 过滤器模式&#xff08;Filter Pattern&#xff09;或标准模式&#xff08;Criteria Pattern&#xff09;是一种设计模式&#xff0c;这种模式允许开发人员使用不同的标准来过滤一组对象&…

OpenAI与微软合作,构建 ChatGPT 5 模型;10天准确天气预报

&#x1f989; AI新闻 &#x1f680; OpenAI与微软合作&#xff0c;构建 ChatGPT 5 模型&#xff0c;下一代人工智能或拥有超级智能 摘要&#xff1a;OpenAI首席执行官 Sam Altman 在接受采访时表示&#xff0c;OpenAI正在与微软合作构建下一代人工智能模型 ChatGPT 5&#x…

基于模拟退火算法的TSP问题建模求解(Python)

基于模拟退火算法的TSP问题建模求解&#xff08;Python&#xff09; 一、模拟退火算法&#xff08;Simulated Annealing Algorithm&#xff0c;SAA&#xff09;工程背景模拟退火算法用于优化问题求解原理 二、旅行商问题&#xff08;Travelling salesman problem&#xff0c;TS…

园区网络项目实战

实验背景 某写字楼备搭建一张网络供楼内企业办公使用。写字楼共6层&#xff0c;目前已有三层投入使用&#xff0c;分别 是一层会客大厅、二层行政部及总经理办公室、三层研发部和市场部。一层设有核心机房&#xff0c;其 他各楼层均有一个小房间放置网络设备。 第一步 询…

【Hello Go】Go语言运算符

Go语言运算符 算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符运算符优先级 算术运算符 如果之前没有其他语言基础的小伙伴可以参考下我之前写的C语言运算符讲解 这里主要讲解下Go和C运算符的不同点 – 运算符 Go语言中只有后置 和后置– var a int 5a--fmt.P…

竞赛选题 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习

文章目录 0 简介1 课题背景&#x1f6a9; 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率&#xff08;Accuracy&#xff09;3.2 精确率(Precision)和召回率(Recall)3.3 平均精…

【2021集创赛】Arm杯一等奖作品—基于 Cortex-M3 内核 SOC 的动目标检测与跟踪系统

本作品介绍参与极术社区的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~ 团队介绍 参赛单位&#xff1a;北京理工大学 队伍名称&#xff1a;飞虎队 指导老师&#xff1a;李彬 参赛杯赛&#xff1a;Arm杯 参赛人员&#xff1a;余裕鑫 胡涵谦 刘鹏昀 获奖情况&#xff1…

Python数据容器(字典)

字典 1.字典的定义2.字典数据的获取3.字典的嵌套4.嵌套字典的内容获取5.字典的常用操作6.常用操作总结7.遍历字典8.练习 1.字典的定义 同样使用{}&#xff0c;不过存储的元素是一个一个的&#xff1a;键值对&#xff0c;语法如下 # 定义字典字面量 {key:value,key:value,...,…

邮件钓鱼-邮件来源伪造-SPF绕过-setoolkitgohishswaks钓鱼

0x00 SPF简介 SPF即发送方策略框架&#xff0c;某种邮件服务器会有自己的SPF策略设定&#xff0c;可以设定SPF为只允许某些主机发送邮件等&#xff0c;当设定后第三方就无法伪造成邮件服务器的管理员对用户下发邮件。 是否存在SPF的验证&#xff1a; linux下&#xff1a;dig…

day17_多线程基础

今日内容 零、 复习昨日 一、作业 二、进程与线程 三、创建线程 四、线程的API 一、复习 IO流的分类 方向: 输入,输出类型: 字节(XxxStream),字符(XxxReader,XxxWriter)字节输入流类名: FileInputStream字节输出流类名: FileOutputStream字符输入流类名: FileReader字符输出流类…

bclinux aarch64 ceph 14.2.10 对象存储 http网关 CEPH OBJECT GATEWAY Civetweb

相关内容 bclinux aarch64 ceph 14.2.10 文件存储 Ceph File System, 需要部署mds&#xff1a; ceph-deploy mds-CSDN博客 ceph-deploy bclinux aarch64 ceph 14.2.10【3】vdbench fsd 文件系统测试-CSDN博客 ceph-deploy bclinux aarch64 ceph 14.2.10【2】vdbench rbd 块设…

RabbitMQ之消息应答和持久化

文章目录 前言一、消息应答1.概念2.自动应答3.消息应答方法4.Multiple 的解释5.消息自动重新入队6.消息手动应答代码7.手动应答效果演示 二、RabbitMQ持久化1.概念2.队列如何实现持久化3.消息实现持久化4.不公平分发5.预取值 总结 前言 在RabbitMQ中&#xff0c;我们的消费者在…

Django之模版层

文章目录 模版语法传值模版语法传值特性模版语法标签语法格式if模板标签for模板标签with起别名 模版语法过滤器常用过滤器 自定义过滤器、标签、inclusion_tag自定义过滤器自定义标签自定义inclusion_tag 模版导入模版继承 模版语法传值 模板层三种语法{{}}:主要与数据值相关{%…

【LLM】0x00 大模型简介

0x00 大模型简介 个人问题学习笔记大模型简介LLM 的能力&#xff1a;LLM 的特点&#xff1a; LangChain 简介LangChain 核心组件 小结参考资料 个人问题 1、大模型是什么&#xff1f; 2、ChatGPT 在大模型里是什么&#xff1f; 3、大模型怎么用&#xff1f; 带着问题去学习&a…

Linux Centos 根目录扩展分区(保级教程)

Centos 根目录扩展分区 1. 扩展背景2.列出磁盘信息3. 对磁盘进行分区4. 重启Linux5. 将PV加入卷组centos并分区6.查看分区结果 1. 扩展背景 虚拟机初始分配20G内存&#xff0c;扩容到80G。 2.列出磁盘信息 可以得知容量信息以及即将创建的PV路径&#xff08;通常为“/dev/s…

2024上海国际智能驾驶技术展览会(自动驾驶展)

2024上海国际智能驾驶技术展览会 2024 Shanghai International Autonomous driving Expo 时间&#xff1a;2024年3月26-28日 地点&#xff1a;上海跨国采购会展中心 随着科技的飞速发展&#xff0c;智能驾驶已经成为了汽车行业的重要趋势。在这个时代背景下&#xff0c;汽车不…

Qt 线程串口

文章目录 ui设置创建线程函数初始串口run函数接收发送数据读取数据处理读取的数据写入数据写入启动的命令 主线程 ui设置 创建线程函数 #include <QObject> #include <QThread> #include <QSerialPort> #include <QSerialPortInfo>class SerialPort :…