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

leetcode--罗马数字转整数--python

文章目录

  • 题目
    • 题目详情
    • 示例
  • 解题思路
    • 思路
    • 代码
    • 运行结果
    • 最佳方案

题目

题目详情

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

示例

输入: "III"
输出: 3
输入: "IV"
输出: 4
输入: "IX"
输出: 9
输入: "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
输入: "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.

解题思路

思路

  1. 首先把罗马数字对应的数字存到映射表中
  2. 再运用一个判断语句判断是该加还是减,判断条件是根据当前数与下一个数作比较而的出来的。
  3. 最后就可以得出最后的运行结果

代码

class Solution:def romanToInt(self,s):dic = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,}result = 0for i in range(len(s)):if i < len(s)-1 and dic[s[i]] < dic[s[i+1]]:   #判断条件,当前数是否小于下一个result -= dic[s[i]]else:result += dic[s[i]]return resultif __name__ == "__main__":obj = Solution()st = 'IV'obj.romanToInt(st)

运行结果

在这里插入图片描述

最佳方案

64ms

class Solution:def romanToInt(self, s: str) -> int:digit = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}sum = 0Maxdigit = 0for i in range(len(s)-1,-1,-1):if digit[s[i]] >= Maxdigit:Maxdigit = digit[s[i]]sum = sum + digit[s[i]]else:sum = sum - digit[s[i]]return sum

相关文章:

如何利用azMan (Authorization Manager) 实现 role-based的安全验证机制

在WCF中如何配置基于asp.net role的授权机制&#xff0c;看了些时日&#xff0c;总算有点眉目了 。 以下是一个典型的通过自定义的role-based (principalPermissionModeUseAspNetRoles)来进行授权的WCF service config file. Code<?xml version"1.0" encoding&q…

spring-cloud-ribbon负载均衡

Ribbon Ribbon是一个基于HTTP和TCP客户端的负载均衡器。Feign中也使用Ribbon&#xff0c;后续会介绍Feign的使用。 Ribbon可以在通过客户端中配置的ribbonServerList服务端列表去轮询访问以达到均衡负载的作用。 当Ribbon与Eureka联合使用时&#xff0c;ribbonServerList会被Di…

LSGO代码小组第17周复盘日志

本图文是15级数理系黄佳新同学代表代码小组进行的学习汇报内容。

leetcode--最小路径和--python

文章目录题目题目详情示例解题思路思路动态规划小知识代码运行结果最佳方案题目 题目详情 给定一个包含非负整数的 m x n 网格&#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例…

Python 编写用户登录接口

附有流程图可以看一看&#xff0c;第一次画会慢慢改进的。代码如下&#xff1a;1.User 用户名存储文件王二 123 张三 1234 李四 1234562.Lock_User 被锁用户文件3. Land.py 主程序文件#codingutf-8import sysi0while i<3:print("----Welcome------&quo…

再发布一个windows live writer 插件 图标信息框 wlw plugin icon info frame

原地址&#xff1a; http://www.zu14.cn/2008/12/14/wlw_plugin_icontip/ 自上次发布 windows live writer 插件 coolemotion 之后&#xff0c;已经有一段时间了&#xff0c;今天再发布一款 其实&#xff0c;这个插件已经发布很久了&#xff0c; 只是我懒得去 windows live gal…

什么是抽样分布?

本图文详细介绍了抽样分布的概念并利用Matlab进行了仿真。有团队孔令才博士提供。

leetcode--下一个更大元素II--python

文章目录题目题目详情示例解题思路思路代码运行结果最佳方案题目 题目详情 给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序&#xff0c;这个数字…

我也说说Emacs吧(6) - Lisp速成

前面我们学习了基本操作&#xff0c;也走马观花地看了不少emacs lisp的代码。这一章我们做一个lisp的速成讲座。 Lisp的含义是表处理语言。它的代码组成结构都是用括号组成的表来表示的。Lisp中的功能&#xff0c;要么是以函数形式求值&#xff0c;要么本身就是一些特殊表。比如…

Matlab与数据结构 -- 如何获取给定目录中的文件

本图文详细介绍了Matlab中如何获取给定目录中文件的操作。

我的资源 分享区

把最近所做过一些程序都发上来。希望有用。已经上传了我的资源里面去了 第一期&#xff1a; 2007年制作的手机抽奖程序&#xff08;没完善版本&#xff09;&#xff1a; As 2.0 版本手机抽奖程序&#xff1a;http://dl4.csdn.net/fd.php?i60728776657431&s52b0082a4017dde…

软件测试概述--基础篇

文章目录软件测试概述软件测试基本概念软件测试的目的和原则软件测试的分类测试用例软件测试概述 软件测试基本概念 软件缺陷&#xff1a;俗话说就是bug。即计算机软件或程序存在某种破坏正确运行能力的问题、错误或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不…

Matlab与线性代数 -- 矩阵的连接

本图文介绍了Matlab中矩阵连接的cat方法。

Load balancer does not have available server for client

最近在研究spring-cloud&#xff0c;研究zuul组件时发生下列错误&#xff1a; Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: zuul-server 解决办法就是在pom文件里添加 <dependency> <groupId>or…

js 抛出异常 throw

netsuite中&#xff0c;有的时候在流程上我们需要控制&#xff0c;停止现有流程那么可以采取一种比较无奈的办法。 由于一些特殊情况&#xff0c;我们可以编写详细的流程控制&#xff0c;如netsuite销售人员可以审批一些SO单据&#xff0c;但并不是所有的SO单据他都能自己审批。…

leetcode--长按键入--python

文章目录题目题目详情示例解题思路思路代码运行结果最佳方案题目 题目详情 你的朋友正在使用键盘输入他的名字 name。偶尔&#xff0c;在键入字符 c 时&#xff0c;按键可能会被长按&#xff0c;而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。如果它对应的…

Visual Studio 2008 每日提示(十四)

本篇包括tip131-tip140 http://www.watch-life.net/visual-studio/visual-studio-2008-tip-day-14.html #131、你为什么会把窗体设置成为浮动&#xff08;模式&#xff09; 原文链接:Why you would want to make a Tool Window Floating 如果你想把工具窗体放在一个特定的区域&…

mysql双机热备的实现

转&#xff1a;http://blog.csdn.net/qq394829044/article/details/53203645 Mysql数据库没有增量备份的机制&#xff0c;当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制&#xff0c;其实就是把主数据库的所有的数据同时写到备份的数据库中…

Matlab编程与数据类型 -- 多维数组

本图文详细介绍了Matlab中的多维数组。

leetcode--最长连续递增序列--python

文章目录题目题目详情示例解题思路思路代码运行结果最佳方案题目 题目详情 给定一个未经排序的整数数组&#xff0c;找到最长且连续的的递增序列。 示例 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3。 尽管 [1,3,5,7] 也是升序的子序列, 但它不是…

va_start() va_end()函数应用

1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);void foo(parm_list,...);2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:1 #include <iostream>2 voidfun(inta, ) 3 { 4 int*temp &a; 5 temp; 6 for(i…

高考估分查分选志愿一键搞定_支付宝又操办了件人生大事

摘要&#xff1a; 可能比高考更考验心力的填报志愿&#xff0c;支付宝要帮你一键搞定。 支付宝今天正式上线集估分、查分、选志愿等众多服务于一体的高考后综合服务平台&#xff0c;陪伴高考学生的青春大考。考生在估分、查分后&#xff0c;还可以看到系统智能推荐供参考的合适…

LSGO:祝大家新年快乐!

2016年&#xff0c;团队做了很多事&#xff0c;有做成的&#xff0c;有没做成的&#xff0c;有正在推进的&#xff0c;有主动放弃的&#xff0c;有做的好的&#xff0c;有做的不好的&#xff0c;但总体上还是做了很多的事情。希望2017年能做更多一点的事情&#xff0c;好的做的…

VMware安装Centos7桌面版超详细图文过程

前提准备&#xff1a; VMware Workstation虚拟机 centos7.4 镜像&#xff08;我下载的DVD版4.1G&#xff09; 打开VM&#xff0c;点击文件->新建虚拟机 不是说你分给虚拟机2G内存&#xff0c;主机就少了2G的内存。比如说假设主机内存为8G&#xff0c;虚拟机关闭的时候&…

关于ASP.NET Web 部件连接的引入

创建用于 ASP.NET 2.0 应用程序的 Web 部件 您可以用两种方法创建 Web 部件。第一种方法涉及创建一个自定义的 Web 部件类&#xff0c;该类从 System.Web.UI.WebControls.WebParts 命名空间中定义的 WebPart 类继承。使用该方法时&#xff0c;将自定义的 Web 部件类打包到一个程…

hive2.1.1安装配置

2019独角兽企业重金招聘Python工程师标准>>> 一、Hive 运行模式 与 Hadoop 类似&#xff0c;Hive 也有 3 种运行模式&#xff1a; 1. 内嵌模式 将元数据保存在本地内嵌的 Derby 数据库中&#xff0c;这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显&am…

高斯消元法对矩阵LU分解的影响

** 欢迎大家到Matlab与线性代数专栏中查看相关图文。 ** 本文详细介绍了Matlab进行lu分解操作时l不为三角形的原理。

Windows10下SSH远程拷贝文件

因为今天需要把服务器上面的东西备份一下&#xff0c;自己平时也在windows下面做的测试&#xff0c;所以用windows在服务器拷贝文件到本地。 首先需要下载一个工具pscp.exe 下载链接 然后再把它移动到这个目录下面就行了 WINR打开命令行 pscp -r 用户名ip:/root/flask E:/refl…

如何在Matlab中获取函数参数的数目?

本图文详细介绍了Matlab中获取函数参数数目的方法。

新站测试中欢迎访问

想买画的可以来看看哦 www.oneartone.com 转载于:https://www.cnblogs.com/liugod/archive/2009/01/04/1368082.html