news 2026/11/5 3:59:16

LeetCode 12. 整数转罗马数字

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 12. 整数转罗马数字

LeetCode 12. 整数转罗马数字

题目

  • 难度:中等
  • 题型分类:数学、字符串、查表法
  • 题目链接:整数转罗马数字

给定整数num,将其转换为罗马数字。

罗马数字的基本符号如下:

符号IVXLCDM
数值1510501005001000

按千位、百位、十位、个位依次转换并拼接。其中以下数值使用减法形式:

4 → IV 9 → IX 40 → XL 90 → XC 400 → CD 900 → CM

I、X、C、M最多连续出现三次;V、L、D不重复使用。

示例

输入:num = 3749 输出:"MMMDCCXLIX" 解释:3000 + 700 + 40 + 9 → MMM + DCC + XL + IX。 输入:num = 58 输出:"LVIII" 解释:50 + 8 → L + VIII。 输入:num = 1994 输出:"MCMXCIV" 解释:1000 + 900 + 90 + 4 → M + CM + XC + IV。

数据范围

  • 1 <= num <= 3999

解题思路

使用查表法,提前保存每一位对应的罗马数字:

  • R[0]:个位,表示0~9。
  • R[1]:十位,表示0~90,步长为10。
  • R[2]:百位,表示0~900,步长为100。
  • R[3]:千位,表示0~3000,步长为1000。

分别提取四个数位,从高到低查表拼接:

千位:num / 1000 百位:num / 100 % 10 十位:num / 10 % 10 个位:num % 10

以上除法均为整数除法。数位为0时,对应空字符串,不添加任何符号。

  • 时间复杂度:O(1),题目范围内只需固定次数的查表与拼接。
  • 空间复杂度:O(1),映射表及结果长度均有固定上限。

Java

classSolution{publicStringintToRoman(intnum){String[][]R={{"","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"}};returnR[3][num/1000]+R[2][num/100%10]+R[1][num/10%10]+R[0][num%10];}}

C++

classSolution{public:stringintToRoman(intnum){vector<vector<string>>R={{"","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"}};returnR[3][num/1000]+R[2][num/100%10]+R[1][num/10%10]+R[0][num%10];}};

Python 3

classSolution:defintToRoman(self,num:int)->str:R=[["","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"]]return(R[3][num//1000]+R[2][num//100%10]+R[1][num//10%10]+R[0][num%10])
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/5 3:58:57

AI软著专家 | 实战落地案例#实战案例#软著申请

#玄宿科技 #AI软著专家 #软件著作权 #软著申请 #AI工具 #效率工具 #实操演示 目录 一、上一期留的引子&#xff0c;这一期直接跑给你看 二、开跑&#xff1a;装好工具&#xff0c;把需求说进对话框 三、五轮确认对话&#xff1a;每一步都要你拍板 3.1 对话一 它先讲出对软…

作者头像 李华
网站建设 2026/11/5 3:58:41

Agent 学习笔记 07:如何让 Agent 掌握任务状态

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/5 3:58:03

睡眠呼吸机吹出来的是氧气吗?

不是——它吹的就是你卧室里的空气&#xff0c;只是被过滤、加压了。先把两台机器放在一起看&#xff0c;差别一眼就清楚&#xff1a;同样一屋空气&#xff0c;左边那台只改变压力&#xff0c;右边那台才改变成分。睡眠呼吸机吹出来的是氧气吗&#xff1f;不是。它吹的就是你卧…

作者头像 李华
网站建设 2026/11/5 3:57:54

系统路径为中文导致软件安装失败?完整解决方案来了

1. 问题现象&#xff1a;为什么中文路径会让软件装不上 不少用户在安装软件时会遇到这样的诡异情况&#xff1a;双击安装包、一路“下一步”都很正常&#xff0c;最后却提示 安装失败、无法写入文件、路径无效&#xff0c;或者干脆闪退。排查了半天才发现&#xff0c;唯一的“特…

作者头像 李华
网站建设 2026/11/5 3:57:04

园区应急联动怎么建?

应急联动最常见的失败&#xff0c;不是系统没建&#xff0c;而是建了用不上&#xff1a;报警响了&#xff0c;值班人员要先打电话问"人在哪、什么情况"&#xff0c;十几分钟过去&#xff0c;处置窗口已经错过。问题的核心是应急场景缺一个能把位置、视频、人员身份串…

作者头像 李华
网站建设 2026/11/5 3:57:03

定位事件怎么推给业务系统?千寻位置事件订阅接入准备

园区定位系统上线后&#xff0c;业务侧通常紧接着提一个需求&#xff1a;告警要自动推到 HSE 系统、工单系统或应急平台&#xff0c;而不是让人盯着定位大屏。园区定位告警与业务系统联动&#xff0c;可通过事件主动推送、接口定时查询或消息中间件等方式实现。 2026年11月3日&…

作者头像 李华