leetCode刷题 12. 整数转罗马数字

1. 思路

罗马数字的转换可以通过贪心算法来实现。我们可以按照罗马数字的规则,从大到小依次匹配并减去对应的值,直到 num 变为 0。

2. 解题方法

  1. 初始化一个 StringBuilder 用于存储转换后的罗马数字。
  2. 枚举所有的罗马数字符号,按照从大到小的顺序进行匹配:
    • 如果当前数字大于等于当前符号对应的值,则将对应的符号添加到 StringBuilder 中,并从 num 中减去对应的值。
  3. 重复步骤 2 直到 num 变为 0。
  4. 返回 StringBuilder 转换为的字符串。

3. 复杂度

  • 时间复杂度:O(1),因为罗马数字的数量有限,不随输入变化而变化。
  • 空间复杂度:O(1),只需要常数级别的额外空间。

4. Code

class Solution {public String intToRoman(int num) {// 用于存储转换后的罗马数字StringBuilder roman = new StringBuilder(); // 枚举所有的罗马数字符号,按照从大到小的顺序进行匹配while (num > 0) {if (num >= 1000) {roman.append("M");num -= 1000;} else if (num >= 900) {roman.append("CM");num -= 900;} else if (num >= 500) {roman.append("D");num -= 500;} else if (num >= 400) {roman.append("CD");num -= 400;} else if (num >= 100) {roman.append("C");num -= 100;} else if (num >= 90) {roman.append("XC");num -= 90;} else if (num >= 50) {roman.append("L");num -= 50;} else if (num >= 40) {roman.append("XL");num -= 40;} else if (num >= 10) {roman.append("X");num -= 10;} else if (num >= 9) {roman.append("IX");num -= 9;} else if (num >= 5) {roman.append("V");num -= 5;} else if (num >= 4) {roman.append("IV");num -= 4;} else {roman.append("I");num -= 1;}}// 返回转换后的罗马数字字符串return roman.toString(); }
}

         这段代码通过贪心算法实现了将整数转换为罗马数字的功能,按照题目中的规则逐步转换并减去对应的值。

欢迎大家后台联系讨论。

(一份Java面试宝典,有兴趣的读者姥爷可以私信我领取!!!免费滴)

图片

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

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

相关文章

Java面试题之线程

1. 进程和线程的区别 进程是资源分配的基本单位;线程是任务调度执行的基本单位;进程的创建和销毁消耗的资源都比线程要多;多个进程之间的内存资源是独立的;在一个进程中多个线程之间的内存资源是共享的; 一个进程中包…

谷歌蓝牙快速配对(GFPS)技术规范及认证资讯

蓝牙作为短距离传输的主力之一,应用的场景非常广泛,故多个联盟或超级企业在制定标准时,无论是从协议对接、使用场景规范,还是应用要求,都会充分考虑蓝牙的重要作用性,Google也不例外。 今天众乐认证就详细…

信息收集:端口扫描原理,端口扫描分类,端口扫描工具,手动判断操作系统,操作系统识别工具

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」:此文章已录入专栏《网络安全自学教程》 端口&系统版本 一、端口扫描1、telnet2、Nmap3、Masscan4、端口扫描原…

腾讯云学生服务器购买方法_学生购买腾讯云这样才便宜!

腾讯云学生服务器优惠活动「云校园」轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年,轻量应用服务器4核8G配置112元3个月、352.8元6个月、646.8元一年,CVM云服务器2核4G3M公网带宽配置842.4元一年,腾讯云服务器网txyfwq.com分享2…

5.Python从入门到精通—Python 运算符

5.Python从入门到精通—Python 运算符 Python 运算符算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级 Python 运算符 Python语言支持以下类型的运算符: 算术运算符比较(关系)运算符赋…

【消息队列开发】实现DataBaseManagerTests(测试单元)

文章目录 🍃前言🌳准备工作🎍书写测试代码⭕总结 🍃前言 今天我们来对前面所开发的数据库操作的功能进行测试一下 🌳准备工作 由于我们接下来要写很多测试用例 并且我们希望每个方法都是一个/一组单元测试用例&am…

0基础转行软件测试?需要做哪些准备?

一说到软件测试,可能会有很多朋友会问:软件行业如何?行业背景到底是怎么样的?以后发展前景好吗?今天我就给大家做一个深度剖析,到底做软件行业好不好?有什么优势?软件测试对学历有什…

【掌握版本控制:Git 入门与实践指南】多人协作

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:泥中に咲く—ウォルピスカーター 0:34━━━━━━️💟──────── 4:46 🔄 ◀️ ⏸ ▶…

搭建个人智能家居 3 -第一个设备“点灯”

搭建个人智能家居 3 -第一个外设“点灯” 前言ESPHome点灯 HomeAssistant 前言 前面我们已经完成了搭建这个智能家居所需要的环境HomeAssistant和ESPHome,今天我们开始在这个智能家居中添加我们的第一个设备(一颗LED灯),如果环境…

SpringBoot(静态资源访问+Rest风格请求)

文章目录 1.静态资源访问1.基本介绍2.快速入门1.新建一个maven项目2.引入依赖 pom.xml3.创建文件目录4.Application.java5.创建四个可以存放静态资源的文件夹6.通过浏览器访问(这四个都可以访问) 3.注意事项和细节1.关于静态资源的访问管理2.修改静态资源…

小迪安全40WEB 攻防-通用漏洞CSRFSSRF代码审计同源策略加载函数

#知识点: 逻辑漏洞 1、CSRF-原理&危害&探针&利用等 2、SSRF-原理&危害&探针&利用等 3、CSRF&SSRF-黑盒下漏洞探针点 #详细点: CSRF 全称:Cross-site request forgery,即,跨站请求…

Python AI 之Stable-Diffusion-WebUI

Stable-Diffusion-WebUI简介 通过Gradio库,实现Stable Diffusion web 管理接口 Windows 11 安装Stable-Diffusion-WebUI 个人认为Stable-Diffusion-WebUI 官网提供的代码安装手册/自动安装不适合新手安装,我这边将一步步讲述我是如何搭建Python Conda…