当前位置: 首页 > news >正文

小哆啦解题记:整数转罗马数字

小哆啦解题记:整数转罗马数字

小哆啦开始力扣每日一题的第十四天

https://leetcode.cn/problems/integer-to-roman/submissions/595220508/

第一章:神秘的任务

一天,哆啦A梦接到了一项任务——将一个整数转换为罗马数字。他心想:“这不就是数字嘛,应该不难!”于是,他兴奋地跑去找小智,请他一起解决这个问题。

“小智,看看这个任务!”哆啦A梦得意地递上任务清单。

小智一看,露出一个“数学怪”式的笑容:“哦,罗马数字啊,这可是一道有趣的题目。我们从最基础的工具开始吧!”

第二章:用 switch 解锁数字

小智从兜里拿出一个工具,笑着说:“这是‘switch’,在一些简单的情况下,它能快速解决问题。我们先用它试试看。”

哆啦A梦好奇地看着,“那我们怎么开始?”

小智示范道:“假设我们有个数字 9,switch 能帮助我们通过多个条件来转换它。”接着,小智展示了代码:

function intToRomanSwitch(num: number): string {let result = '';switch (true) {case num >= 1000:result += 'M'.repeat(Math.floor(num / 1000));num %= 1000;case num >= 900:result += 'CM';num -= 900;case num >= 500:result += 'D';num -= 500;case num >= 400:result += 'CD';num -= 400;case num >= 100:result += 'C'.repeat(Math.floor(num / 100));num %= 100;case num >= 90:result += 'XC';num -= 90;case num >= 50:result += 'L';num -= 50;case num >= 40:result += 'XL';num -= 40;case num >= 10:result += 'X'.repeat(Math.floor(num / 10));num %= 10;case num >= 9:result += 'IX';num -= 9;case num >= 5:result += 'V';num -= 5;case num >= 4:result += 'IV';num -= 4;case num >= 1:result += 'I'.repeat(num);num -= num;}return result;
}console.log(intToRomanSwitch(58));  // LVIII

哆啦A梦看了看:“嗯,switch 处理得不错,但它有点冗长,而且每次都需要写很多条件判断,感觉有些麻烦。”

小智点了点头:“你说得对,switch 在一些简单情况中可以工作,但如果要处理更大的数字,代码会变得越来越复杂,且不容易维护。”

第三章:用 map 提升效率

“那我们该怎么办?”哆啦A梦有些疑惑。

小智微笑着说:“别急,接下来我将给你展示一个更灵活的工具——map。”

哆啦A梦眼睛一亮:“map?它是做什么的?”

小智解释道:“map 可以存储数字和它们对应的罗马数字,我们可以通过查找数字来获取罗马数字,避免了重复的条件判断。”

接着,小智展示了如何使用 map 来简化代码:

function intToRoman(num: number): string {const romanMap: Map<number, string> = new Map([[1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'],[100, 'C'], [90, 'XC'], [50, 'L'], [40, 'XL'],[10, 'X'], [9, 'IX'], [5, 'V'], [4, 'IV'], [1, 'I']]);let result = '';for (const [value, symbol] of romanMap) {while (num >= value) {result += symbol;num -= value;}}return result;
}console.log(intToRoman(58));  // LVIII

哆啦A梦眼睛一亮:“哇,这个map真是太棒了!只需要查找一下就能得到结果,而且代码也简洁得多。”

小智点了点头:“没错!map 让我们可以轻松地管理数字和罗马数字的关系,代码更加清晰,扩展性也更强。”

第四章:成功的冒险

通过 map,哆啦A梦不仅顺利完成了任务,还学到了如何用合适的工具来解决问题。

哆啦A梦开心地说:“原来,map 真的比 switch 更适合这种任务!它帮助我避免了重复的条件判断,效率也更高。”

小智笑着拍了拍哆啦A梦的背:“你学得很快!选择合适的工具,就能让问题变得简单。记住,不同的问题有不同的解法,找到最合适的才是王道!”

相关文章:

小哆啦解题记:整数转罗马数字

小哆啦解题记&#xff1a;整数转罗马数字 小哆啦开始力扣每日一题的第十四天 https://leetcode.cn/problems/integer-to-roman/submissions/595220508/ 第一章&#xff1a;神秘的任务 一天&#xff0c;哆啦A梦接到了一项任务——将一个整数转换为罗马数字。他心想&#xff1a;…...

【Java数据结构】排序

【Java数据结构】排序 一、排序1.1 排序的概念1.2 排序的稳定性1.3 内部排序和外部排序1.3.1 内部排序1.3.2 外部排序 二、插入排序2.1 直接插入排序2.2 希尔排序 三、选择排序3.1 选择排序3.2 堆排序 四、交换排序4.1 冒泡排序4.2 快速排序Hoare法&#xff1a;挖坑法&#xff…...

我的求职之路合集

我把我秋招和春招的一些笔面试经验在这里发一下&#xff0c;网友们也可以参考一下。 我的求职之路&#xff1a;&#xff08;1&#xff09;如何谈自己的缺点 我的求职之路&#xff1a;&#xff08;2&#xff09;找工作时看重的点 我的求职之路&#xff1a;&#xff08;3&…...

数据结构(四) B树/跳表

目录 1. LRU 2. B树 3. 跳表 1. LRU: 1.1 概念: 最近最少使用算法, 就是cache缓存的算法. 因为cache(位于内存和cpu之间的存储设备)是一种容量有限的缓存, 有新的数据进入就需要将原本的数据进行排出. 1.2 LRU cache实现: #include <iostream> #include <list>…...

Arcgis国产化替代:Bigemap Pro正式发布

在数字化时代&#xff0c;数据如同新时代的石油&#xff0c;蕴含着巨大的价值。从商业决策到科研探索&#xff0c;从城市规划到环境监测&#xff0c;海量数据的高效处理、精准分析与直观可视化&#xff0c;已成为各行业突破发展瓶颈、实现转型升级的关键所在。历经十年精心打磨…...

LBS 开发微课堂|AI向导接口服务:重塑用户的出行体验

为了让广大开发者 更深入地了解 百度地图开放平台的 技术能力 轻松掌握满满的 技术干货 更加简单地接入 位置服务 我们特别推出了 “位置服务&#xff08;LBS&#xff09;开发微课堂” 系列技术案例 第六期的主题是 《AI向导接口服务的能力与接入方案》 随着地图应…...

AI导航工具我开源了利用node爬取了几百条数据

序言 别因今天的懒惰&#xff0c;让明天的您后悔。输出文章的本意并不是为了得到赞美&#xff0c;而是为了让自己能够学会总结思考&#xff1b;当然&#xff0c;如果有幸能够给到你一点点灵感或者思考&#xff0c;那么我这篇文章的意义将无限放大。 背景 随着AI的发展市面上…...

openstack单机安装

openstack单机安装 网卡配置安装依赖开启虚拟环境修改配置文件 部署openstack部署openstack客户端访问可视化界面Horizon补充 本篇主要讲述Ubuntu2204单机安装openstackstable/2024.2。其他版本的Linux系统或者openstack版本&#xff0c;请参考openstack官网。 网卡配置 需要配…...

Vue3实现小红书瀑布流布局任意组件动态更新页面方法实践

思路 1.首先定义一个瀑布流容器&#xff0c;它的高度暂定&#xff08;后面会更新&#xff09;。把需要布局的组件&#xff08;这里叫做waterfall-item&#xff09;放在瀑布流容器里面渲染出来。使用绝对定位&#xff08;position: absolute&#xff09;&#xff0c;把它移到屏幕…...

深度学习项目--基于LSTM的糖尿病预测探究(pytorch实现)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 LSTM模型一直是一个很经典的模型&#xff0c;一般用于序列数据预测&#xff0c;这个可以很好的挖掘数据上下文信息&#xff0c;本文将使用LSTM进行糖尿病…...

Next.js 实战 (十):中间件的魅力,打造更快更安全的应用

什么是中间件&#xff1f; 在 Next.js 中&#xff0c;中间件&#xff08;Middleware&#xff09;是一种用于处理每个传入请求的功能。它允许你在请求到达页面之前对其进行修改或响应。 通过中间件&#xff0c;你可以实现诸如日志记录、身份验证、重定向、CORS配置、压缩等任务…...

python+playwright自动化测试(四):元素操作(键盘鼠标事件)、文件上传

目录 鼠标事件 悬停 移动 按键 点击 滚轮操作 拖拽 键盘事件 输入文本内容 type输入内容 fill输入内容 按键操作press 文件上传 下拉选/单选框/复选框 滚动条操作 鼠标事件 悬停 page.get_by_text(设置,exactTrue).nth(1).hover() 移动 page.mouse.move(x33…...

【论文+源码】Diffusion-LM 改进了可控文本生成

这篇论文探讨了如何在不重新训练的情况下控制语言模型&#xff08;LM&#xff09;的行为&#xff0c;这是自然语言生成中的一个重大开放问题。尽管近期一些研究在控制简单句子属性&#xff08;如情感&#xff09;方面取得了成功&#xff0c;但在复杂的细粒度控制&#xff08;如…...

双目立体校正和Q矩阵

立体校正 对两个摄像机的图像平面重投影&#xff0c;使二者位于同一平面&#xff0c;而且左右图像的行对准。 Bouguet 该算法需要用到双目标定后外参(R&#xff0c;T) 从上图中可以看出&#xff0c;该算法主要分为两步&#xff1a; 使成像平面共面 这个办法很直观&#xff…...

vscode 自用插件

vscode按住ctrl鼠标左键无法跟踪跳转方法名&#xff0c;装这些插件就可以 vscode-elm-jump:常规的代码跳转定义 Vue CSS Peek:跳转css定义 vue-helper:变量函数只跳转定义 Vetur 代码提示 Baidu Comate 自动帮你写console.log Turbo Console Log: ctrl alt l 选中变量之后&am…...

OpenCV:在图像中添加高斯噪声、胡椒噪声

目录 在图像中添加高斯噪声 高斯噪声的特性 添加高斯噪声的实现 给图像添加胡椒噪声 实现胡椒噪声的步骤 相关阅读 OpenCV&#xff1a;图像处理中的低通滤波-CSDN博客 OpenCV&#xff1a;高通滤波之索贝尔、沙尔和拉普拉斯-CSDN博客 OpenCV&#xff1a;图像滤波、卷积与…...

DuckDB:Golang操作DuckDB实战案例

DuckDB是一个嵌入式SQL数据库引擎。它与众所周知的SQLite非常相似&#xff0c;但它是为olap风格的工作负载设计的。DuckDB支持各种数据类型和SQL特性。凭借其在以内存为中心的环境中处理高速分析的能力&#xff0c;它迅速受到数据科学家和分析师的欢迎。在这篇博文中&#xff0…...

MySQL入门(数据库、数据表、数据、字段的操作以及查询相关sql语法)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

kotlin的协程的基础概念

Kotlin的协程是一种用于简化异步编程的强大工具。 理解协程的基础概念可以帮助开发者有效地利用其能力。 以下是Kotlin协程的一些关键基础概念&#xff1a; 协程&#xff08;Coroutines&#xff09; &#xff1a; 协程是一种用于处理并发任务的编程模型&#xff0c;它可以在单…...

Spring--SpringMVC使用(接收和响应数据、RESTFul风格设计、其他扩展)

SpringMVC使用 二.SpringMVC接收数据2.1访问路径设置2.2接收参数1.param和json2.param接收数据3 路径 参数接收4.json参数接收 2.3接收cookie数据2.4接收请求头数据2.5原生api获取2.6共享域对象 三.SringMVC响应数据3.1返回json数据ResponseBodyRestController 3.2返回静态资源…...

ThinkPad开机嘀嘀响或报2100/2110错误?可能是硬盘松了!自己动手检测与修复指南

ThinkPad开机嘀嘀响或报2100/2110错误&#xff1f;三步排查硬盘接触不良问题ThinkPad用户对那个标志性的开机"嘀嘀"声再熟悉不过——正常情况下它意味着系统自检通过。但当这个声音变成急促的报警音&#xff0c;伴随屏幕上出现"2100 Detection error"或&qu…...

UOS系统下WPS卸载不干净?手把手教你用命令行精准清理(附dpkg/apt组合拳)

UOS系统下WPS卸载不干净&#xff1f;手把手教你用命令行精准清理 在UOS系统日常使用中&#xff0c;WPS Office作为常用办公软件&#xff0c;有时因版本更新或功能调整需要彻底卸载。但不少用户发现&#xff0c;通过图形界面或简单命令卸载后&#xff0c;系统中仍残留配置文件、…...

从Gamma函数到泊松分布:一个概率论中的含参量积分实用案例解析

Gamma函数与泊松分布&#xff1a;概率论中的数学之美 在数据科学和机器学习的实践中&#xff0c;概率分布构成了建模的基石。当我们深入探究这些分布背后的数学原理时&#xff0c;Gamma函数以其优雅的性质和广泛的应用脱颖而出。它不仅连接了离散与连续概率世界&#xff0c;更在…...

为什么软件开发偏爱 Linux?深度剖析 Linux 相较于 Windows 的核心优势

引言 在软件开发的世界里&#xff0c;一个有趣的现象是&#xff1a;无论是大型互联网公司的服务器集群&#xff0c;还是资深程序员的个人开发机&#xff0c;Linux 操作系统的身影无处不在。与之形成鲜明对比的是&#xff0c;尽管 Windows 在个人消费市场占据绝对主导地位&…...

为什么鸿蒙 App 最终都会走向状态驱动?

子玥酱 &#xff08;掘金 / 知乎 / CSDN / 简书 同名&#xff09; 大家好&#xff0c;我是 子玥酱&#xff0c;一名长期深耕在一线的前端程序媛 &#x1f469;‍&#x1f4bb;。曾就职于多家知名互联网大厂&#xff0c;目前在某国企负责前端软件研发相关工作&#xff0c;主要聚…...

PCB的常规机械通孔与HDI工艺钻孔差异

结合常规 4 层通孔 PCB&#xff08;非 HDI&#xff09; 标准制程&#xff0c;分步骤讲清钻孔时机、先后顺序&#xff0c;区分机械通孔与板件结构&#xff0c;专业且贴合工厂实际流程。一、先明确 4 层通孔板基础结构4 层板结构&#xff1a;L1 → PP 半固化片 → L2/L3&#xff…...

LaTeX公式一键转Word:3步告别数学公式编辑烦恼

LaTeX公式一键转Word&#xff1a;3步告别数学公式编辑烦恼 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 还在为Word文档中的数学公式编辑而抓狂…...

如何快速定制Office界面:终极开源工具使用指南

如何快速定制Office界面&#xff1a;终极开源工具使用指南 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribbonx-editor O…...

LeagueAkari:基于LCU接口的英雄联盟客户端自动化工具深度解析

LeagueAkari&#xff1a;基于LCU接口的英雄联盟客户端自动化工具深度解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 功能模块架构与核心技…...

服务器数据下载安全:实时加密与动态访问控制实战

1. 这不是又一个“加个密码”的方案&#xff0c;而是服务器数据流动的实时安检闸机IP-guard安全网关——这个名字在企业IT运维圈里&#xff0c;常被误读为“桌面端U盘管控工具”或“员工上网行为审计系统”。但真正用过它来守服务器的人&#xff0c;会立刻意识到&#xff1a;它…...