23-整数转罗马数字
代码
测试用例
测试结果
测试结果
12. 整数转罗马数字
中等
相关标签
相关企业
七个不同的符号代表罗马数字,其值如下:
| 符号 | 值 |
|---|---|
| I | 1 |
| V | 5 |
| X | 10 |
| L | 50 |
| C | 100 |
| D | 500 |
| M | 1000 |
罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规则:
- 如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字。
- 如果该值以 4 或 9 开头,使用 减法形式,表示从以下符号中减去一个符号,例如 4 是 5 (
V) 减 1 (I):IV,9 是 10 (X) 减 1 (I):IX。仅使用以下减法形式:4 (IV),9 (IX),40 (XL),90 (XC),400 (CD) 和 900 (CM)。 - 只有 10 的次方(
I,X,C,M)最多可以连续附加 3 次以代表 10 的倍数。你不能多次附加 5 (V),50 (L) 或 500 (D)。如果需要将符号附加4次,请使用 减法形式。
给定一个整数,将其转换为罗马数字。
function intToRoman(num: number): string {// 定义罗马数字符号和对应的整数值const values: number[] = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];const symbols: string[] = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"];let result = '';// 遍历每个罗马数字对应的整数值for (let i = 0; i < values.length; i++) {// 当输入的数字大于等于当前罗马数字对应的整数值时while (num >= values[i]) {// 将对应的罗马数字符号添加到结果字符串中result += symbols[i];// 从输入数字中减去当前罗马数字对应的整数值num -= values[i];}}return result;
}// 测试用例
const testCases = [3, 4, 9, 58, 1994];
testCases.forEach((num) => {console.log(`输入整数: ${num}, 转换后的罗马数字: ${intToRoman(num)}`);
});
代码解释
- 定义罗马数字符号和对应的值:
values数组存储了罗马数字对应的整数值,按照从大到小的顺序排列。symbols数组存储了对应的罗马数字符号,与values数组中的值一一对应。
- 初始化结果字符串:
result用于存储最终转换后的罗马数字字符串。
- 遍历罗马数字对应的整数值:
- 使用
for循环遍历values数组。 - 对于每个值,使用
while循环检查输入的数字num是否大于等于当前值。 - 如果是,则将对应的罗马数字符号添加到
result字符串中,并从num中减去该值。
- 使用
- 返回结果:
- 当
num变为 0 时,循环结束,返回最终的罗马数字字符串。
- 当
复杂度分析
- 时间复杂度:(O(1)),因为
values数组和symbols数组的长度是固定的,无论输入的数字大小如何,循环的次数都是有限的。 - 空间复杂度:(O(1)),只使用了常数级的额外空间。
这个算法通过从大到小依次尝试减去罗马数字对应的整数值,逐步构建出对应的罗马数字字符串,同时遵循了罗马数字的转换规则。
相关文章:
23-整数转罗马数字
代码 测试用例 测试结果 测试结果 12. 整数转罗马数字 中等 相关标签 相关企业 七个不同的符号代表罗马数字,其值如下: 符号值I1V5X10L50C100D500M1000 罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以…...
SpringBoot+Redis+Mybatis-plus黑马点评
短信登录 基于Session实现登录 流程: 发送短信验证码-->短信验证码注册登录-->校验登录状态(保存用户到ThreadLocal,方便后续使用) 不能每次请求服务都要进行登录状态校验,解决办法:拦截器 在Sp…...
深入剖析 OpenCV:全面掌握基础操作、图像处理算法与特征匹配
深入剖析 OpenCV:全面掌握基础操作、图像处理算法与特征匹配 一、引言二、OpenCV 的安装(一)使用 pip 安装(二)使用 Anaconda 安装 三、OpenCV 基础操作(一)图像的读取、显示与保存(…...
【C语言显示Linux系统参数】
在C语言中,可以通过调用Linux系统提供的API来获取和显示系统参数。以下是一些常见的系统参数及其获取方法: 1. 获取系统名称和版本 可以使用uname函数来获取系统名称、版本等信息。 #include <stdio.h> #include <sys/utsname.h>int main…...
突破Ajax跨域困境,解锁前端通信新姿势
一、引言 在当今的 Web 开发领域,前后端分离的架构模式已经成为主流,它极大地提升了开发效率和项目的可维护性。在这种开发模式下,前端通过 Ajax 技术与后端进行数据交互,然而,跨域问题却如影随形,成为了开…...
Kotlin协变与逆变区别
在Kotlin中,协变和逆变是泛型编程中的两个重要概念,它们允许我们在类型系统中更加灵活地处理类型关系。 1.协变:协变允许我们使用比原始类型更具体的类型。在kotlin中,通过在类型参数上加out关键字来表示协变,生产者,例…...
driver中为什么要使用非阻塞赋值
1. 模拟硬件时序行为 实际硬件行为:DUT的输入信号通常在时钟边沿被采样。Driver需要确保信号的更新与时钟同步,而非阻塞赋值的延迟更新特性(在时间步结束时统一生效)能够准确模拟寄存器的行为。 示例: always (posedg…...
模板字符串【ES6】
“路漫漫其修远兮,吾将上下而求索。”—— 屈原《离骚》 目录 什么是模板字符串?模板字符串特性及代码举例:详细举例用法: 什么是模板字符串? 模板字符串(Template Literals)是JavaScript中引入…...
通往 AI 之路:Python 机器学习入门-数据结构
Python 数据结构 Python 提供了多种数据结构来存储和操作数据,其中列表(list)、字典(dict)、元组(tuple)和集合(set)是最常用的几种。本章将详细介绍这些数据结构的基本…...
我们应该如何优化UI(基于UGUI)
这是一道面试题,下面,我们来详细分析这个问题。 目录 1. 减少 Draw Call 合理设置图集 避免材质和 Shader 的频繁切换 减少 UI 元素的重叠 2. 优化UI布局 3. 优化UI元素的渲染 4.优化UI动画 5. 优化 UI 事件处理 6. 运行时优化 1. 减少 Draw C…...
CSS3 圆角:实现与优化指南
CSS3 圆角:实现与优化指南 随着网页设计的发展,CSS3 圆角已经成为了现代网页设计中不可或缺的元素之一。本文将详细讲解 CSS3 圆角的基本用法、实现方式以及优化技巧,帮助您在网页设计中更好地运用这一功能。 一、CSS3 圆角基本用法 1.1 基…...
【网络安全 | 扫描子域+发现真实IP】CloakQuest3r安装使用详细教程
原创文章,禁止转载。 本文仅作学习交流使用,不得用于非法渗透,笔者不承担任何责任。 文章目录 简介功能介绍执行流程限制安装步骤可选功能:SecurityTrails API使用示例简介 CloakQuest3r 是一款强大的 Python 工具,专为揭示受 Cloudflare 及类似服务保护的网站真实 IP 地…...
Mellanox OFED驱动如何给全局编译添加gcc的编译选项?(subdir-ccflags-y += -Wall)
背景 有些时候编译驱动需要给全局加一个编译选项,假设configure已经完成。可以直接在Makefile中修改 添加方式 修改OFED驱动目录下的: ./Makefile subdir-ccflags-y -Wall修改效果: 然后执行make,就能让添加的编译选项生效…...
【愚公系列】《Python网络爬虫从入门到精通》037-文件的存取
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...
【一起学Rust | Tauri2.0框架】单实例应用程序的深入解析:零漏洞实现与优化实战
文章目录 前言一、 单实例应用的意义二、 实现单实例应用的方法1 Windows下的实现1.1 创建命名Mutex1.2 在Tauri应用中集成Mutex检查 2 macOS下的实现2.1 获取Bundle Identifier2.2 检查是否已经有实例在运行 3 Linux下的实现3.1 获取进程列表3.2 检查是否已经有实例在运行 4 在…...
PhyloSuite v1.2.3安装与使用-生信工具049
PhyloSuite 一个好用的win集成建树平台,官方相关文档视频等做的可好了PhyloSuite (jushengwu.com) 官网 https://github.com/dongzhang0725/PhyloSuite/releases #官网 http://phylosuite.jushengwu.com/dongzhang0725.github.io/installation/ #官方说明文档…...
使用Apache Lucene构建高效的全文搜索服务
使用Apache Lucene构建高效的全文搜索服务 在现代应用程序中,全文搜索功能是不可或缺的一部分。无论是电子商务网站、内容管理系统,还是数据分析平台,快速、准确地搜索大量数据是提升用户体验的关键。Apache Lucene 是一个强大的全文搜索引擎…...
SSH远程登录并执行命令
SSH远程登录并执行命令 1、登录远程服务器2、远程执行命令3、远程执行交互命令4、远程执行脚本5、退出远程SSH连接 SSH是Linux中的远程连接管理工具,可以在本地服务器上通过SSH协议连接到远程服务器,并在远程服务器上执行命令 SSH不仅可以用来登录远程服…...
EasyRTC:支持任意平台设备的嵌入式WebRTC实时音视频通信SDK解决方案
随着互联网技术的飞速发展,实时音视频通信已成为各行各业数字化转型的核心需求之一。无论是远程办公、在线教育、智慧医疗,还是智能安防、直播互动,用户对低延迟、高可靠、跨平台的音视频通信需求日益增长。 一、WebRTC与WebP2P:实…...
Golang语言特性
1.Go语言的优势 1.1极简单的部署方式 —可以直接编译成机器码。代码可以直接转换为二进制数据,在操作系统上可以直接./去执行。 —不依赖其他库。最终生成的可执行程序是一个静态的二进制文本文件。 —可以直接运行即可部署。 —静态类型语言。编译的时候检查出来隐…...
2026跨境电商数据采集避坑指南:实测实在Agent如何终结“数字员工”的幻觉时代
【摘要】 2026年3月,跨境电商行业正式迈入“Agent驱动”的生产力新纪元。随着阿里巴巴Accio Work、腾讯云MAGIC Agent 2.0等工具的密集发布,传统基于脚本的爬虫正被具备自主决策能力的“数字员工”取代。然而,在实际业务落地中,通…...
C++ 动态内存管理深度解析:new/delete 完全指南
引言在 C 语言中,我们使用 malloc()、calloc()、realloc() 和 free() 来管理动态内存。而 C 引入了全新的动态内存管理方式——new 和 delete。这不仅带来了语法上的简化,更重要的是引入了类型安全和初始化的概念。在学习过程中,我对 new 的理…...
开源 + 国产算力:香橙派AIpro打通ROS与大模型,具身智能不再属于少数实验室
从能帮你拿快递的服务机器人,到能在工厂里灵活装配的机械臂,人们不满足于AI只会聊天——我们想要的是能看、能听、能行动的智能体,也就是具身智能机器人。问题来了:要做出一个具身智能机器人,是不是还得像几年前一样&a…...
SClick进阶技巧:6个提升使用体验的实用功能
SClick是一款轻量级的防休眠工具,能够帮助用户解决Windows系统自动休眠带来的诸多不便。 软件体积仅有几十KB,绿色便携,无需安装,即用即走。 它通过模拟鼠标点击的方式,让系统以为用户一直在操作电脑,从而防…...
用STC89C51+LM358做个心率计,从硬件选型到代码调试的完整避坑指南
从零打造高精度心率监测仪:STC89C51与LM358的硬核实战手册 指尖轻触红外传感器,LCD屏幕上的数字开始跳动——这不是医疗设备,而是你用面包板和51单片机搭建的心率监测装置。当开源硬件遇上生物信号采集,传统单片机依然能在可穿戴设…...
自动化抢票工具:从技术原理到实战部署的全流程解析
自动化抢票工具:从技术原理到实战部署的全流程解析 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 在票务销售场景中,人工操作面临三大核心痛点:页面刷新延迟导…...
Pixel Epic在MBA教学中的应用:学生用像素界面完成商业计划书作业案例
Pixel Epic在MBA教学中的应用:学生用像素界面完成商业计划书作业案例 1. 引言:当商业教育遇上像素冒险 在传统MBA教学中,商业计划书撰写往往是让学生头疼的作业任务。学生们需要花费大量时间收集数据、分析市场、构建财务模型,最…...
如何突破AI编程工具限制?三大核心方案助你效率倍增
如何突破AI编程工具限制?三大核心方案助你效率倍增 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial …...
BROADCOM博通集成 Matter 1.5平台认证就绪、BK7239N等芯片助力智能家居无缝融合
博通集成多款Wi-Fi SoC的Matter SDK平台已全面完成对Matter v1.5标准的支持,并通过Matter兼容性平台认证。此举标志着Beken芯片方案持续可为客户提供“开箱即用”的Matter开发体验,助力设备制造商高效推出符合最新统一标准的智能产品。随着Matter生态的快…...
构筑可信电子签名签章体系,亲笔签助力黔江区公立医院改革与高质量发展
巍巍武陵山,滔滔阿蓬江,在渝东南这片热土上,一个关乎50余万群众健康福祉的数字变革正在发生。2022年,黔江区成为首批入选公立医院改革与高质量发展示范项目全国15个试点地区之一。从“看病难、看病远”的山区困境,到“…...
