Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >罗马字符转整数(python)

罗马字符转整数(python)

作者头像
全栈程序员站长
发布于 2022-11-10 06:53:43
发布于 2022-11-10 06:53:43
75100
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

题目:

罗马数字包含以下七种字符: 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。 给定一个罗马数字,将其转换成整数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution:
    def romanToInt(self, s: str) -> int:
        SYMBOL_VALUES = {
            'I': 1,
            'V': 5,
            'X': 10,
            'L': 50,
            'C': 100,
            'D': 500,
            'M': 1000,
        }
        a=0
        for i, element in enumerate(s):
            if i<len(s)-1 and SYMBOL_VALUES[s[i]] < SYMBOL_VALUES[s[i+1]]:
            #如果此时的罗马符号表示的数字比其右边的数字小的话,
            则左边的数字由加改为减,而右边的数字认为加
                a -= SYMBOL_VALUES[s[i]]
            else:
                a += SYMBOL_VALUES[s[i]]
        return a

​

执行用时:48 ms, 在所有 Python3 提交中击败了75.60%的用户

内存消耗:15 MB, 在所有 Python3 提交中击败了56.65%的用户

通过测试用例:3999 / 3999

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月28日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
创建一个微服务?首先回答这10个问题
原文作者:Datawire 原文地址:https://articles.microservices.com/creating-a-microservice-answer-these-10-questi
双愚
2018/06/27
8000
【微服务架构 】微服务简介,第3部分:服务注册表
在微服务系列的这篇文章中,我们将讨论服务注册表。在第2部分中,我们讨论了API网关,其中我们提到服务已在数据库中注册。网关根据该数据库中包含的信息调度请求。下面我们将探讨如何填充数据库以及服务,客户端和网关与之交互的方式。
架构师研究会
2019/09/16
1K0
【微服务架构 】微服务简介,第3部分:服务注册表
[微服务架构]API网关.微服务简介,第2部分
在微服务系列的这篇文章中,我们将讨论API网关以及它们如何帮助我们解决基于微服务架构的一些重要问题。我们在本系列的第一篇文章中描述了这些和其他问题。
架构师研究会
2019/09/16
6940
[微服务架构]API网关.微服务简介,第2部分
Go + gRPC-Gateway(V2) 构建微服务实战系列,小程序登录鉴权服务:第二篇(内附开发 demo)
开发时,我们可以点击 Create New Playground 按钮,进行数据库相关的 CRUD 操作。
为少
2021/05/27
1.2K0
Go + gRPC-Gateway(V2) 构建微服务实战系列,小程序登录鉴权服务:第二篇(内附开发 demo)
如何构建一个 NodeJS 影院微服务并使用 Docker 部署
如何构建一个 NodeJS 影院微服务并使用 Docker 部署。在这个系列中,将构建一个 NodeJS 微服务,并使用 Docker Swarm 集群进行部署。
Swift社区
2024/10/21
3220
如何构建一个 NodeJS 影院微服务并使用 Docker 部署
Serverless 实战:打造个人阅读追踪系统
在互联网时代,知识可以说从未像如此一般廉价,但是再好的知识若是对个人没有产生价值的话,那也只不过是一种信息噪音而已。我在 个人知识管理:知识的三种形态 这篇文章中使用 材料 -> 资料 -> 知识 这样的路径来解释信息的流通,如何方便快捷并且有效地收集材料,再将其整理转化为有价值的个人知识体系结构,在这个信息严重碎片化的时代变得尤为重要。而在 去伪存真的知识管理之路 一文中也详细阐述了如何将网络上的碎片化文章纳入统一的稍后阅读体系,比如说有时候在朋友圈看到一篇好文章,但暂时没时间直接看,或是这篇文章值得再读一遍,细读一遍,那么我就会将其存入稍后阅读工具即 Instapaper 当中,诸如此类的还有 Pocket、收趣等等。
JimmyLv_吕靖
2019/09/10
8900
Serverless 实战:打造个人阅读追踪系统
「微服务架构」Medium的微服务架构实践
微服务¹架构的目标是帮助工程团队更快,更安全,更高质量地交付产品。解耦服务允许团队快速迭代,对系统的其余部分影响最小。
架构师研究会
2019/06/28
6300
「微服务架构」Medium的微服务架构实践
Go: 微服务框架 Fiber 简介与实践
微服务体系结构是一种应用程序架构,其中应用程序被开发为服务集合。它提供了独立开发,部署和维护微服务架构图和服务的框架。
Freedom123
2024/03/29
6360
Go: 微服务框架 Fiber 简介与实践
【微服务架构】什么是微服务? — 全面了解微服务架构
What is Microservices — Edureka 您有没有想过,什么是微服务以及扩展行业如何与它们集成,同时构建应用程序以满足客户的期望? 要了解什么是微服务,您必须了解如何将单体应用程序分解为独立打包和部署的小型微型应用程序。本文将让您清楚了解开发人员如何使用微服务根据需要扩展其应用程序。 在本文中,您将了解以下内容: 为什么是微服务? 什么是微服务? 微服务架构的特点 微服务架构的优势 设计微服务的最佳实践 使用微服务的公司 为什么是微服务? 现在,在我告诉你微服务之前,让我们看看在
架构师研究会
2022/04/24
2.5K0
【微服务架构】什么是微服务? — 全面了解微服务架构
【微服务干货系列】使用微服务架构之前,你必须知道的
正如敏捷之父MartinFowler所说的那样,单体架构和微服务并不是简单的二选一,两者都是模糊的定义,这就意味着大多数系统都将在一个模糊的边界区域。很多开发团队已经认识到微服务架构比单体架构更优越,但是也有其他团队感觉到这是一种消弱生产力的负担,就像任何软件架构,微服务架构同样有利弊。为了能做出一个明智的选择,你必须了解这些应用并将它们运用到你特定的环境中。 微服务的“定义” 如果需要准确的给微服务下一个定义,抱歉,笔者找了很长时间,也没有一个准确的定义,最接近微服务的定义来自维基百科,全文如下: In
Rainbond开源
2018/05/31
3590
【微服务架构】介绍KivaKit框架
关键点 KivaKit是一个模块化Java框架,用于开发需要Java 11+虚拟机但与Java 8源代码兼容的微服务 KivaKit提供了实现应用程序的基本功能,包括命令行解析和应用程序配置 KivaKit组件是轻量级组件,使用广播/侦听器消息传递系统传递状态信息 KivaKit迷你框架,包括转换、验证、资源和日志迷你框架,通过消息传递使用和报告状态信息 KivaKit配置并运行Jetty、Jersey、Swagger和Apache Wicket,以一致的方式提供微服务接口 关键的KivaKit基类也可以
架构师研究会
2022/03/08
4480
微服务架构
微服务架构 单体架构能够很好地应对简单的业务系统。但是随着业务的扩张,功能的不断增加,单体架构面临着越来越多的挑战: 维护成本增加 团队越来越大,相应的沟通成本、管理成本、人员协调成本显著增加。 引
小柒2012
2018/04/13
7770
微服务架构
完美整合Spring Cloud与异构微服务的框架!Spring Cloud Wii开源啦!
Spring Cloud Wii是一个用来 快速整合 Spring Cloud 与 异构微服务 的框架,灵感来自 Spring Cloud Netflix Sidecar[1] 。目前支持的服务发现组件:
用户1516716
2019/09/11
3.2K0
开源 Java 微服务应用程序框架 KivaKit 简介
KivaKit 是一个基于 Apache 许可证的开源 Java 框架,用于实现微服务。KivaKit 需要一个 Java 11+ 虚拟机,但与 Java 8 和 9 项目源代码兼容。KivaKit 由一组精心集成的迷你框架组成。每个迷你框架都有一致的设计和自己的关注点,可以单独使用,也可与其他迷你框架协同使用。下图是这些框架的依赖网络简图,这是一张很直观的 KivaKit 高级架构图:
深度学习与Python
2021/12/31
8900
开源 Java 微服务应用程序框架 KivaKit 简介
如何让你的微服务保持稳定
在用微服务工作时,我们通常还需要在本地进行一些开发,这可能是一个痛点。在本篇文章中,我们将探讨一个可能有效的解决方案。
Techeek
2018/07/09
8800
如何使用Winston记录Node.js应用程序
在本指南中,我们将重点介绍Winston的日志包,这是一个极其通用的日志库,是基于NPM下载统计信息,可用于Node.js应用程序的日志记录解决方案。Winston的功能包括支持多个存储选项和日志级别,日志查询,甚至是内置的分析器。本教程将展示如何使用Winston记录我们创建的Node/Express应用程序。还将研究如何将Winston与另一个名为Morgan的Node.js的HTTP请求中间件记录器结合起来,以便将HTTP请求数据日志与其他信息进行整合。
姚啊姚
2018/07/25
5.7K0
SpringCloud简介与微服务架构
微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。
BUG弄潮儿
2021/02/03
6270
SpringCloud简介与微服务架构
深入理解单体架构
在单体架构中,整个应用程序被构建为一个独立的可执行文件或代码库。这种架构模式的主要组成部分包括前端用户界面、业务逻辑层和数据存储层。让我们深入探讨在这个传统的架构中所使用的一些关键技术和框架。
GeekLiHua
2025/01/21
1040
Go + gRPC-Gateway(V2) 构建微服务实战系列,小程序登录鉴权服务(三):RSA(RS512) 签名 JWT
没错,JWT 就这三部分组成 HEADER.PAYLOAD.SIGNATURE(头部.负载.签名),我们这里选择非对称加密算法(RS512)。
为少
2021/05/27
1.1K0
Go + gRPC-Gateway(V2) 构建微服务实战系列,小程序登录鉴权服务(三):RSA(RS512) 签名 JWT
云计算和微服务的区别和联系
云计算(Cloud Computing)和微服务(Microservices)是当今软件开发和部署中的两种重要技术,它们分别在计算资源和软件架构方面提供了不同的服务模式和架构方式。本文将介绍云计算和微服务的区别和联系,以及它们的模式、架构和优势。
Echo_Wish
2024/02/26
7540
推荐阅读
相关推荐
创建一个微服务?首先回答这10个问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验