Roman to Integer

C++ 罗马数字转整数(Roman to Integer) 罗马数字包含以下七种字符: 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 。同样地,数 阅读详情

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.

Rule: 

从前往后扫描,用一个临时变量记录分段数字。

如果当前处理的字符对应的值和上一个字符一样,那么临时变量加上这个字符。比如III = 3
如果当前比前一个大,说明这一段的值应该是当前这个值减去前面记录下的临时变量中的值。比如IIV = 5 – 2
如果当前比前一个小,那么就可以先将临时变量的值加到结果中,然后开始下一段记录。比如VI = 5 + 1

public class Solution {
    
    public int romanToInt(String s) {
        if(s.length() < 1) return 0;
        int result = 0;
        int sub = getRomanValue(s.charAt(0));
        int lastv = sub;
        for(int i = 1 ; i < s.length(); ++i) {
            char curc = s.charAt(i);
            int curv = getRomanValue(curc);
            if(curv == lastv) 
                sub += curv;
            else if( curv < lastv) {
                result += sub;
                sub = curv;
            } else {
                sub = curv - sub;
            }
            lastv = curv;
        }
        result += sub;
        return result;
    }
    public int getRomanValue(char c) {
        switch(c) {
            case 'I': return 1; 
            case 'V': return 5;
            case 'X': return 10;
            case 'L': return 50;
            case 'C': return 100;
            case 'D': return 500;
            case 'M': return 1000;
            default: return 0;
        }
    }
}

From: http://blog.unieagle.net/2012/10/18/leetcode%E9%A2%98%E7%9B%AE%EF%BC%9Aroman-to-integer/


Leetcode || Roman to Integer package pack; /* * 从前向后遍历罗马数字,如果某个数比前一个数小,则加上该数。 * 反之,减去前一个数的两倍然后加上该数。 */ class Solution { private int getInteger(char ch) { switch(ch) { case 'I' : return 1; c 阅读详情

相关推荐

长整数及其基本运算在编程中的应用

在讨论长整数时,首先需要明确整数类型的基本概念。在传统编程语言如C和C++中,整数类型被分为有符号和无符号两种。它们有固定的位数,如8位、16位、32位等。而长整数则没有这种限制。在不同的语言和库中,长整数可能有不同的实现方式,但它们共有的特点是能够存储非常大的数,甚至可以达到几千个字节。Visual Studio作为广泛使用的集成开发环境(IDE),支持多种编程语言。在C#和C++中,内置的长整数类型能够处理超出传统整数范围的大数。C#提供了long和ulong。

weixin_35370061的博客 1013

长整数代数运算

1.1、 设计任务与目标 1.1、1. 任务描述 长整数代数运算: 应用线性数据结构解决长整数的计算问题。设计数据结构完成长整数的表示和存储,并编写算法来实现两长整数的加、减、乘、除等基本代数运算。 1.1、2. 具体目标 (1) 长整数长度在一百位以上。 (2) 实现两长整数的加、减、乘、除操作。 (3) 输入输出均在文件中。 (4) 分析算法的时空复杂性。 1.1、3. 目的意义 在一般的程序运算中,长整数是无法计算的,因为计算机一次能够运算的位数是有限,一旦整数很长,就需要一个程序来进行多次计算,通过

InterestAndFun的博客 3108

Docker篇——Docker常用命令大全!史上最全面的Docker命令,涵盖常规命令、镜像基本命令、容器基本命令以及常用其他命令,一篇文章速通!

本篇文章介绍的关于DOcker的命令非常全面,Docker常见的命令介绍完毕,涉及到的命令比较繁杂,希望大家可以收藏并坚持学习。后续还会持续更新相关技术点,敬请期待

我热爱学习,也乐于分享。无论是科技前沿的洞见,还是生活中的小技巧,我都会在这里与你分享。我相信,知识就是力量,而分享则能让这份力量得到更好的传递。 5748

长整数的处理——沐雨先生

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 设计目的 概要设计 流程图 源代码 运行结果 总结 设计目的 通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。 通过课程设计,提升程序开发能力,能运用合理的控制流编写清晰高校的程序。 通过程序设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对编写程序的兴趣,并能独立设计一个小型系统。 通过课程设计,加强了自己的程序分析能力。.

Movrain的博客 2148

PyTorch复现PSMNet踩坑全记录:从环境配置到KITTI数据集训练

本文详细记录了使用PyTorch复现CVPR经典立体匹配模型PSMNet的全过程,从环境配置到KITTI数据集训练,特别针对2023年主流软硬件环境中的常见问题提供解决方案。文章重点介绍了PSMNet的金字塔池化模块和堆叠沙漏结构,帮助研究者和工程师快速实现工业级深度估计,节省大量试错时间。

weixin_30897233的博客 328

卫星图像检测,分割,跟踪,超分辨率,数据集调研,以及论文笔记

目标检测,针对物体有很多类如桥,烟囱,罐子等,有静态图像下的检测,也就是图像源头多来自谷歌地图,但是前后帧没有任何联系,并且谷歌地图相对来说比较清楚,难度小一点,也有粗粒度以及较细粒度的检测,然后卫星视频的数据集较少,则可以通过前后帧的联系来辅助检测,并且卫星帧基本上只对车,船,飞机,火车进行检测,没有进行细粒度的检测即将车辆分类为卡车,皮卡,小轿车,但是关船,则可以分类为货船以及军舰,因为目前的卫星视频中小车实在太少了,难以进行更细粒度的检测。luojia 三号卫星。

zhangzhao147的博客 4707

(C语言综合实践题之三)长整数计算

长整数计算 大整数一般指超过十位的十进制整数,这里假定不超过五十位。这类大整数在C语言系统中因超界溢出,因而不能直接表达和计算。 本题目中建议以字符串形式输入、存放和输出大整数,计算时可以将字符串中的每位数字字符转换成相应数值进行运算,结果再转回字符存放和输出。 功能要求: 主函数输入2个大整数,并提供功能菜单供用户选择,用户可以选择调用以下各个运算功能,对这两个大整数进行相应的计算,并输出结果。也可以选择继续或退出程序。系统应提供以下功能: (1) 加法:对主函数输入的大整数进行加法运算,并输出结果; .

一觉睡到天亮的博客 1188

洛谷P5707 【深基2.例12】上学迟到(c语言)

第一篇题解 题目描述 yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有 s(s\le 10000)s(s≤10000) 米,而 yyy 可以以 v(v<10000)v(v<10000) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM 的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。 输入格式 两个正整数 s,v,意思已经在题目中给定

cc_love_program的博客 1万+

LeetCode 12 Integer to Roman题解

题目地址: https://leetcode.com/problems/integer-to-roman/ 题目: Given an integer, convert it to a roman numeral. 给定一个数,将它转化为罗马数值。 Input is guaranteed to be within the range from 1 to 3999.

赞美月亮的专栏 636

Android 13.0 framework默认沉浸式导航栏功能实现

​ 在13.0的系统rom定制化开发中,在实现导航栏的某些定制化开发中,在某些产品需要实现沉浸式导航栏,就是需要app 能全屏显示同样也能显示导航栏,接下来就来分析下相关的功能实现 ​

安卓兼职framework和app工程师的博客 467

【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比

文章目录2.1 使用VBA进行桌面软件开发2.1.1 VBA开发方式2.1.1 VBA代码的安全性2.2 使用DLL进行桌面软件开发2.2.1 DLL开发方式2.2.2 DLL功能的应用部署2.3 使用Add-in进行桌面软件开发2.4 使用ArcGIS Engine构建独立应用程序 对于桌面GIS应用来说,ArcGIS平台不仅提供了用于开发独立运行的GIS应用软件的二次开发工包ArcGIS Engine,还提供了对ArcGIS Deskop桌面软件进行扩展的开发的话,在开发个具体的GIS 行业应用软件时

智慧空间实验室 6510

LeetCode | Roman to Integer

13. Roman to Integer Description Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 5...

Karmen199x的博客 231

【脑肿瘤分类与迁移学习技术】Swin UNETR:当 Swin Transformer 遇见 3D 医学图像分割——从黑盒到白盒的逐层拆解

医学图像分割的终极目标是让算法成为医生的可靠副手,而非黑箱替代品。理解 Swin UNETR 的每一层如何流动、每一个窗口如何移位、每一次拼接如何融合,不仅是为了调参,更是为了在临床场景中。

u012133341的博客 55

[LeetCode] Roman to Integer and Integer to Roman

羅馬數字共有7個,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。按照下述的規則可以表示任意正整數。需要注意的是罗马数字中没有“0”,與進位制無關。一般認為羅馬數字只用來記數,而不作演算。 重複數次:一個羅馬數字重複幾次,就表示這個數的幾倍。 右加左減: 在較大的羅馬數字的右邊記上較小的羅馬數字,表示大數字加小數字。在較大的羅馬數字的左邊

Jesus in my place 5907

Google Earth Engine(GEE)——使用归一化燃烧指数 (NBR) 绘制地表烧伤严重程度图

归一化燃烧指数(Normalized Burn Ratio, NBR)是一种遥感指标,用于评估野火或烧伤地面后的植被恢复情况。NBR能增强较大范围的火灾区域,如大于200公顷。它是通过比较远红外波段 (SWIR) 和近红外波段 (NIR) 的反射率来计算的。SWIR波段测量烧伤地面的反射率,NIR波段测量没有受到烧伤影响的植被的反射率。NBR的计算公式为:NBR =(NIR-SWIR)/(NIR + SWIR)。其中,NIR为近红外波段,SWIR为短波红外波段。

此星光明博客 3465

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Roman to Integer/Integer to Roman

1 Roman to IntegerGiven a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.首先,想做出这道题得了解一下罗马数字。罗马数字有如下符号: I(1) V(5) X(10) L(50) C(100) D(500) M(100

Dustin_CDS的博客 555

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【LeetCode】Integer to Roman 和 Roman to Integer 解题报告

【题目】 Given a roman numeral, convert it to an integer. Or, Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 【罗马数字】 1~9: {"I", "II", "III

跳出温水的青蛙 2万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

leetcode - Roman to Integer 与 Integer to Roman

leetcode题目汇集  — Roman与Integer之间的互换 参考网址https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97 Roman To Integer 搬运维基百科对罗马数字性质的介绍: 右加左减: 在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。在较大的罗马数字的左边

知足常乐,知行合一 482

LeetCode--Roman to Integer

Roman to Integer 1. 题目 Roman numerals are represented by seven different symbols:I,V,X,L,C,DandM. Symbol Value I 1 V 5 X 10 L 50 C ...

Vilin的博客 320

Integer to Roman

Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. string intToRoman(int num) { string map[][9] = { { "I", "I

无他,技止熟尔 635

[LeetCode]Roman to Integer

[LeetCode]Roman to Integer

个人技术博客 930

LeetCode之Integer to Roman, Roman to Integer

LeetCode之Integer to Roman, Roman to Integer

Da Cheng Xu 的专栏 1517

【LeetCode算法练习(C++)】Integer to Roman

题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. ps: I = 1; V = 5; X = 10; L = 50; C = 100; D = 500; M = 1000;链接:Integer to Rom

sst2230879的博客 238
上一篇: Leetcode: String to Integer (atoi)
下一篇: Reverse Linked List II
beiyetengqing
博客等级 码龄14年 148粉丝 169原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值