leetcode12. 整数转罗马数字

首先这题不需要怎么考虑罗马数字顺序的问题,罗马转整数才需要,因为我模拟出来对照表就行,不涉及加减运算。

那怎么模拟对照表呢?每一个十分位的整数,都是两个字母的组合。那我按区间列出每个十分位的组合就ok。

直接模拟出1-10,10-100,100-1000,1000-3000的罗马字符,
然后每一位的数在哪个区间,我取出来,然后直接相加就ok!

那我是不是就要遍历每一位,并且知道目前是第几位?
首先难点在于我不知道这个数是几位。

我只要知道了这个数是几位,那每一位的数值我都可以取出来,我就可以直接定位C数组。

其实我不需要遍历也不需要知道是几位,我不管是几位,我把这个数都整除一下10*所有位数(因为最大是千位),当整除得到的是0,那意味着这个数没到这么多位或者这一位是0,我不管,当是0时我直接罗马字符加空就行。

class Solution:def intToRoman(self, num: int) -> str:# 直接模拟出1-10,10-100,100-1000,1000-3000# 一个数整除以(10*n),再对10取余,就得到该数第n位的数。# 假如num // 1000,如果为0,则没有千位以上的数,罗马数字加空就行啦。# 然后我每一个十位都枚举十个数出来就ok。这里最高位是千位,那就弄一个四维数组。roman_list = [["","I","II","III","IV","V","VI","VII","VIII","IX"], # 1-10["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"], # 10-100["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"], # 100-1000["","M","MM","MMM"] # 1000-3000]res = ""res += roman_list[3][num // 1000 % 10]res += roman_list[2][num // 100 % 10]res += roman_list[1][num // 10 % 10]res += roman_list[0][num // 1 % 10]return res

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

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

相关文章

鱼皮 C++ 学习路线一条龙!

大家好,我是鱼皮 🧑🏻‍🦲。 最近有很多小伙伴私信问我有没有 C 的学习路线,其中甚至有刚高考完的朋友! 那就给大家分享一下吧~ 在编写本路线时,鱼皮参考了多位 C 专业大佬的建议,…

vue npm install报错如何处理

npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: eslint-plugin-vue5.2.3 npm ERR! Found: eslint6.8.0 npm ERR! node_modules/eslint npm ERR! peer eslint"> 1.6.0" from vue/cli-plugin-eslint4.4.4 这个错误…

桥梁监测需要哪些设备?

随着我国经济的发展,我国桥梁建设也迈上了新的台阶。截至2022年底,我国的公路桥梁总数达到了103.32万座。然而,随着在役桥梁使用时间的增长,承载能力受到荷载、环境以及结构退化等因素的影响,桥梁安全问题日益凸显。桥…

React 脚手架与react的使用

react脚手架的使用 目标:掌握如何使用react脚手架创建react项目 内容 create react app(CRA)是FaceBook的React团队官方出的一个构建React应用的脚手架工具命令:npx create-react-app react-basic react-basic 表示项目名称&am…

vue3和gin框架实现简单的断点续传

vue3和gin框架实现简单的断点续传 前端代码 Test.vue <template><div><inputtype"file"ref"uploadRef"change"upload"multiple/><templatev-for"item in fileList":key"item.key"><br><…

spring复习:(39)注解方式的ProxyFactoryBean

一、定义接口 package cn.edu.tju.study.service;public interface MyService {void myMethod(); }二、定义实现类&#xff1a; package cn.edu.tju.study.service;public class MyServiceImpl implements MyService{Overridepublic void myMethod() {System.out.println(&qu…

MySQL的存储引擎

1. 有哪些常见的存储引擎&#xff1f; MyISAM&#xff1a;这种引擎是mysql最早提供的。这种引擎又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种&#xff0c;不管是何种MyISAM表&#xff0c;目前它都不支持事务&#xff0c;行级锁和外键约束的功能。 MyISAM Merge引擎&…

Redis 读写分离 使用redisTemplate执行lua脚本时,报错处理

项目框架说明 项目配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version></parent>....<dependency><groupId>org.springfra…

(学习笔记-TCP基础知识)TCP与UDP区别

UDP UDP不提供复杂的控制机制&#xff0c;利用IP提供面向[无连接]的通信服务。 UDP协议非常简单&#xff0c;头部只有8个字节(位)&#xff0c;UDP的头部格式如下&#xff1a; 目标和源端口&#xff1a;主要是告诉UDP协议应该把报文发给哪个进程包长度&#xff1a;该字段保存了…

TinyKv流程梳理三

split流程 处理协程启动 func (bs *Raftstore) startWorkers(peers []*peer) {ctx : bs.ctxworkers : bs.workersrouter : bs.routerbs.wg.Add(2) // raftWorker, storeWorkerrw : newRaftWorker(ctx, router)go rw.run(bs.closeCh, bs.wg)sw : newStoreWorker(ctx, bs.store…

基于Web API drap事件的简单拖拽功能

基于Web API drap事件的简单拖拽功能 效果示例图代码示例 效果示例图 代码示例 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style type"text/css">* {padding: 0px;margin: 0px;box-s…

uniapp动态获取列表中每个下标的高度赋值给另一个数组(完整代码附效果图)

uniapp实现动态获取列表中每个下标的高度&#xff0c;赋值给另一个数组。 先看效果图&#xff1a; 完整代码&#xff1a; <template><div class""><div class"">我是A列表&#xff0c;我的高度不是固定的</div><div class&qu…

300-700题红题第六题

336. 回文对 336. 回文对 **class Solution:def palindromePairs(self, words: List[str]) -> List[List[int]]:dic {w: i for i,w in enumerate(words)}res []for index, s in enumerate(words):for j in range(len(s)1):if s[j:] s[j:][::-1]: if s[:j][::-1] in dic…

MySQL 坐标批量计算及优化

文章目录 1、坐标计算2、优化 现在有一个需求&#xff0c;就是找出距离某用户最近的一些点&#xff0c;一种实现方法就是调用地图的api来计算筛选&#xff0c;另外一种就是在数据库中计算&#xff0c;考虑到地图api有并发量限制&#xff0c;所以选用数据库计算的方式。 1、坐标…

ThunderScope开源示波器

简介 4CH&#xff0c;1GSa/S 开源示波器。前端很简洁&#xff0c;BUF802LMH6518&#xff0c;ADC是HMCAD1511&#xff0c;用Xilinx A7 FPGA进行控制&#xff0c;数据通过PCIE总线传输到上位机处理。目前这个项目已经被挂到了Xilinx官网&#xff0c;强。 设计日志&#xff1a;h…

vue3 defineEmits的使用 和vue2对比

在Vue 3中&#xff0c;可以使用defineEmits来定义组件的自定义事件。defineEmits函数接受一个参数&#xff0c;该参数是一个数组或对象&#xff0c;用于指定需要定义的自定义事件。 使用数组定义自定义事件&#xff1a; import { defineComponent, defineEmits } from vue;co…

Unity自定义后处理——Vignette暗角

大家好&#xff0c;我是阿赵。   继续说一下屏幕后处理的做法&#xff0c;这一期讲的是Vignette暗角效果。 一、Vignette效果介绍 Vignette暗角的效果可以给画面提供一个氛围&#xff0c;或者模拟一些特殊的效果。 还是拿这个角色作为底图 添加了Vignette效果后&#xff0…

一篇全新视角的剖析:用Python编写的一组针对心电图数据的心跳检测算法的实现和探讨

一篇全新视角的深度剖析:用Python编写的一组针对心电图数据的心跳检测算法的实现和探讨 在医学领域,心电图(Electrocardiogram,ECG)是一种常见且重要的检查手段,主要用于了解心脏的电活动。通过心电图数据,我们可以掌握心脏的工作状况,例如心跳是否规律、心室和心房是…

模板模式(上):剖析模板模式在JDK、Servlet、JUnit等中的应用

今天&#xff0c;我们再学习另外一种行为型设计模式&#xff0c;模板模式。我们多次强调&#xff0c;绝大部分设计模式的原理和实现&#xff0c;都非常简单&#xff0c;难的是掌握应用场景&#xff0c;搞清楚能解决什么问题。模板模式也不例外。模板模式主要是用来解决复用和扩…

软件测试银行项目面试过程

今天参加了一场比较正式的面试&#xff0c;汇丰银行的视频面试。在这里把面试的流程记录一下&#xff0c;结果还不确定&#xff0c;但是面试也是自我学习和成长的过程&#xff0c;所以记录下来大家也可以互相探讨一下。 请你做一下自我介绍&#xff1f;&#xff08;汇丰要求英…