当前位置: 首页 > 编程日记 > 正文

【leetcode】Roman to Integer

题目描述:

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

解题思路:

首先我们要了解罗马数字怎么写的
个位数举例
I, 1 】II, 2】 III, 3】 IV, 4 】V, 5 】VI, 6】 VII, 7】 VIII,8 】IX, 9

·十位数举例
X, 10】 XI, 11 】XII, 12】 XIII, 13】 XIV, 14】 XV, 15 】XVI, 16 】XVII, 17 】XVIII, 18】 XIX, 19】 XX, 20】 XXI, 21 】XXII, 22 】XXIX, 29】 XXX, 30】 XXXIV, 34】 XXXV, 35 】XXXIX, 39】 XL, 40】 L, 50 】LI, 51】 LV, 55】 LX, 60】 LXV, 65】 LXXX, 80】 XC, 90 】XCIII, 93】 XCV, 95 】XCVIII, 98】 XCIX, 99 】

·百位数举例
C, 100】 CC, 200 】CCC, 300 】CD, 400】 D, 500 】DC,600 】DCC, 700】 DCCC, 800 】CM, 900】 CMXCIX,999】

·千位数举例
M, 1000】 MC, 1100 】MCD, 1400 】MD, 1500 】MDC, 1600 】MDCLXVI, 1666】 MDCCCLXXXVIII, 1888 】MDCCCXCIX, 1899 】MCM, 1900 】MCMLXXVI, 1976】 MCMLXXXIV, 1984】 MCMXC, 1990 】MM, 2000 】MMMCMXCIX, 3999】

看到上面我们就发现,其实最难办的就是像IV这样的需要判断一下,其他的直接累加就好,所以我们可以把这些需要两个一起的也当做基础数字来减少判断。

class Solution:# @return an integerdef romanToInt(self, s):dic = {"M":1000,"CM":900,"D":500,"CD":400,"C":100,"XC":90,"L":50,"XL":40,"X":10,"IX":9,"V":5,"IV":4,"I":1}l = len(s)res = 0i = 0while i < l:if i+1 < l and s[i]+s[i+1] in dic:res += dic[s[i]+s[i+1]]i += 1else:res += dic[s[i]]i += 1return res

转载于:https://www.cnblogs.com/MrLJC/p/4276116.html

相关文章:

Apache Traffic Server管理工具

Traffic Line是命令行程序&#xff0c;可以用来快速监视 Traffic Server 的性能和网络流量&#xff0c;也能配置 TS。Traffic Shell也是命令行工具&#xff0c;进入该 shell 后有自己一套语法&#xff0c;可代替 Traffic Line 完成监控、配置任务。通过 Traffic Line 和 Traffi…

npm使用记录

npm是一个 包管理工具。安装node之后就可以使用npm命令了&#xff0c;为了方便使用&#xff0c;通常我们还要装下 淘宝NPM镜像&#xff0c;之后就可以用cnpm命令了。 注意&#xff1a;以下提到的如-g --save等标签都可以放在 包名前面。 首先一个前端项目下载下来&#xff0c;需…

Go 分布式学习利器(18)-- Go并发编程之lock+WaitGroup实现线程安全

Go语言中通过Groutine 启动一个Go协程&#xff0c;不同协程之间是并发执行的&#xff0c;就像C/Java中线程之间线程安全是一个常见的问题。 如下Go 语言代码: func TestConcurrent(t *testing.T) {var counter int 0for i : 0;i < 5000; i {go func() { // 启动groutine 进…

Java项目:网上家具商城平台设计和实现(java+springboot+mysql+ssm)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 主要技术&#xff1a;springmvc springboot mybatis mysql jquery layui 等技术 具体功能模块&#xff1a; (1) 用户注册和登录登录功能&#xff1a; ①用户的注册功能 : 访问网站的人根据网站的提示注册…

Linux socket TIME_WAIT 优化

如发现系统存在大量TIME_WAIT状态的连接&#xff0c;通过调整内核参数解决&#xff0c;vim /etc/sysctl.conf编辑文件&#xff0c;加入以下内容&#xff1a;net.ipv4.tcp_syncookies 1net.ipv4.tcp_tw_reuse 1net.ipv4.tcp_tw_recycle 1net.ipv4.tcp_fin_timeout 30然后执行…

Android Handler的使用!!!

大家好我们这一节讲的是Android Handler的使用,在讲Handler之前&#xff0c;我们先提个小问题&#xff0c;就是如何让程序5秒钟更新一下Title.首先我们看一下习惯了Java编程的人&#xff0c;在不知道Handler的用法之前是怎么样写的程序,代码如下所示:view plaincopy to clipboa…

git之reset图解

https://blog.csdn.net/longintchar/article/details/81843048 1、三棵树。 此时如果我们运行 git status&#xff0c;会发现没有任何改动&#xff0c;因为现在三棵树完全相同。 修改文件 现在我们想要对文件进行修改然后提交它。我们将会经历同样的过程&#xff1b;首先在工作…

Go 分布式学习利器(19)-- Go并发编程 之 CSP(communicating sequential processes) 机制

文章目录前言CSP 特点CSP代码 演示1. 正常流程的代码2. CSP 未设置buffer 代码3. 设置指定大小的channel buffer总结前言 CSP 这个名词大家会比较陌生&#xff0c;但是说到future 熟悉C / JAVA 线程模型的伙伴可能就会很熟悉了&#xff0c; 通过future机制能够实现两个线程之间…

Java项目:学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 主要技术、spring、 springmvc、 springboot、 mybatis 、 jquery 、 layUI、md5 、bootstarp.js tomcat、、拦截器等项目 主要功能:登录、用户、菜单管理、角色管理、权限管理、立项申请、报名、结、经费…

update 改写 merge into

update语句改写成merge into有时会提高运行速度 看两个案例 1.根据业务将两个嵌套子查询改写成max&#xff0c;速度有3min提升到3s UPDATE OPER_792.LL_SCB_YDKB_20120730 A SET A.DCP (SELECT B.PROD_OFFER_NAME FROM OPER_792.YD_TC B WHERE A.SERV_ID B.SERV_ID AND B.TC_…

CCControlSwitch 、CCControlSlider、CCControlButton

/**bool hasMoved(); 这里获取的不是开关是否正在被用户拨动&#xff0c;而是开关最终的状态是由用户手动拨动开关进行的&#xff0c;*还是用户点击开关进行的状态更改*/CCControlSwitch* pSwitch CCControlSwitch::create(CCSprite::create("switch-mask.png"),CCS…

bzoj2961 共点圆 (CDQ分治, 凸包)

/* 可以发现可行的圆心相对于我们要查询的点是在一个半平面上&#xff0c; 然后我们要做的就是动态维护凸壳然后用这个半平面去切它 看看是否是在合法的那一面然后cdq分治就可以了代码基本是抄的&#xff0c;*/#include<cstdio> #include<algorithm> #include<c…

Rocksdb Iterator实现:从DBIter 到 TwoLevelIter 的漫长链路

文章目录1. 迭代器简单介绍2. 迭代器用户态相关接口3. 迭代器内部架构4. 迭代器的入口实现4.1 DBIter4.2 MergingIterator4.3 Memtable系列Iterator4.4 LevelIterator 和 TwoLevelIteratorps&#xff1a;本文的基础迭代器设计 以及 相关代码 是基于rocksdb 6.4.6版本进行描述的…

Java项目:OA办公自动化系统设计和实现(java+springboot+freemarker+mysql+maven+mybatis+jpa)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; java springbootOA办公自动化系统&#xff1a; 主要功能模块&#xff1a;系统、用户、角色、考勤、流程、公告、邮件、任务、日程、计划、文件、笔记、通讯录、讨论区等多个模块管理 使用Maven进行项目管理…

UIScrollView上面放一个UIScrollView或者UITableView拖动时候 View出现一闪一闪解决办法...

在项目中发现一个问题&#xff1a; 创建一个UIScrollView 上面放一个scrollView或者TableView&#xff0c;拖动scrollview或TableView 画面出现一闪一闪的情况。 解决办法设置一下UIScrollView的contentSize 如果你是上下滑动scrollView.contentSize CGSizeMake(0, self.view.…

理解koa-router 路由一般使用

阅读目录 一&#xff1a;理解koa-router一般的路由二&#xff1a;理解koa-router命名路由三&#xff1a;理解koa-router多个中间件使用四&#xff1a;理解koa-router嵌套路由五&#xff1a;分割路由文件回到顶部一&#xff1a;理解koa-router一般的路由 koa-router是koa的路由库…

Go 分布式学习利器(20)-- Go并发编程之多路选择和超时控制,channel的关闭和广播

Select 多路选择 基本使用语法如下&#xff1a; select { case ret : <-retCh1: //阻塞事件&#xff0c;等待channel1的消息t.Logf("result %s \n",ret) case ret : <-retCh2:t.Logf("result %s \n", rest) default :t.Error("return empty&q…

Java项目:网盘系统设计和实现(java+ssm+jpa)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 很多同学都有自己的网盘&#xff0c;方便存储一些java学习教程。该毕业设计实现了一个简易的网盘&#xff0c;包含文件上传和文件分享等功能。 后端技术采用了spring&#xff0c;spring mvc&#xff0c;JPA&…

快速学习的方法论

大多数人认为学习的快慢取决于学习者的天赋&#xff0c;实际上研究表明学习方法起着至关重要的作用。更深层次的知识加工&#xff0c;与时而反复的温故知新&#xff0c;在某些情况下会加倍你的学习效率。最近学习了如何快速学习的方法论&#xff0c;分享给大家。 是否能加速理解…

C#拉姆达(=)表达式

前言&#xff1a; 之前小猪曾经分享过自己对C#委托的一点理解 其实在使用委托的过程中我们会大量的使用拉姆达(>)表达式 介绍&#xff1a; "Lambda表达式"是一个匿名函数&#xff0c;是一种高效的类似于函数式编程的表达式&#xff0c;Lambda简化了开发中需要编写…

Python爬虫入门教程 57-100 python爬虫高级技术之验证码篇3-滑动验证码识别技术

滑动验证码介绍 本篇博客涉及到的验证码为滑动验证码&#xff0c;不同于极验证&#xff0c;本验证码难度略低&#xff0c;需要的将滑块拖动到矩形区域右侧即可完成。 这类验证码不常见了&#xff0c;官方介绍地址为&#xff1a;https://promotion.aliyun.com/ntms/act/captchaI…

FlameScope 更高级全面的火焰图

FlameScope 更高级全面的火焰图 文章目录FlameScope 更高级全面的火焰图安装步骤安装问题fix使用方式网飞(Netflix)开发的火焰图工具能够更好得呈现出一段时间内的服务器on/off cpu 的热力图。安装步骤 $ git clone https://github.com/Netflix/flamescope $ cd flamescope $ …

sql 基础--mysql 5 (6)

12.子查询 子查询进行过滤 mysql> select msg from pw_luck where name wang5-> ; ------ | msg | ------ | 1001 | | 1000 | | 1000 | | 100 | | 100 | ------ 5 rows in set (0.03 sec)mysql> select uid from pw_luck where msg in (select msg from pw_luck w…

Java项目:就业管理系统设计和实现(java+springboot+ssm)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 就业管理系统: 该毕业设计采用了spring boot&#xff0c;spring&#xff0c;spring mvc&#xff0c;mybatis作为后端技术框架&#xff0c;这些组合稳定抗打&#xff0c;前端使用了layui&#xff0c;界面美观…

算法设计与分析之循环与递归

前言&#xff1a;循环与递归可以说是算法设计中最基本但却也是最重要的工具方法。循环和递归对于学习过高级程序设计语言的人来说都并不陌生&#xff0c;但还是有必要仔细的探究一下循环和递归之间的相似和区别。循环与递归最大的相似之处莫不是在于他们在算法设计中的工具作用…

面向对象与软件工程---团队作业1

1.队伍名称&#xff1a; 遥遥万里&#xff08;还有很长路要走的意思&#xff09; 2.队员信息&#xff1a; 陈雄&#xff08;组长&#xff09; 学号&#xff1a;1700509024 博客园链接&#xff1a;https://www.cnblogs.com/bearchan/ 廖鹏辉 学号&#xff1a;1700802007 博客园…

从paxos到raft zab,为何raft能够“独领风骚”

文章目录RAFT出现的缘由RAFT 的实现STATE MACHINELog Replicated State MachineLeader Election基本角色关键变量基本选举过程Log Replicated基本概念基本操作SafetyLog Replication: Consistency checkLeader Election: Leader Completeness总结RAFT 和 ZAB 的对比参考文献:阅…

Java项目:前台+后台精品水果商城系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 本系统主要实现的功能有&#xff1a; 前台用户的登录注册&#xff0c;水果商品的展示&#xff0c;水果的购物车&#xff0c; 购物车新增结算等等&#xff0c;银行卡的支付绑定&#xff0c;收货…

Android屏幕像素密度适配详解

讲到像素密度&#xff0c;我们先要搞明白什么是像素密度&#xff0c;像素密度的字面上的意思为手机屏幕上一定尺寸区域内像素的个数。在Android开发中&#xff0c; 我们一般会使用每英寸像素密度&#xff08;dpi&#xff09;这样一个单位来表示手机屏幕的像素密度&#xff0c;d…

如让自己想学不好shell编程都困难?

众所周知&#xff0c;shell是linux运维必备的技术&#xff0c;必须要掌握&#xff0c;但是shell语法复杂&#xff0c;灵活&#xff0c;网友掌握了语法也不知道如何应用到实际运维中&#xff0c;老男孩培训shell编程给所有linux运维人员带来了学好shell的法宝,老男孩培训2014最新…