leetcode 罗马数字转整数

罗马数字包含以下七种字符:IVXLCDM

字符数值
I1
V5
X10
L50
C100
D500
M1000

例如, 罗马数字 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 的范围内。

示例 1:

输入: "III"
输出: 3

示例 2:

输入: "IV"
输出: 4

示例 3:

输入: "IX"
输出: 9

示例 4:

输入: "LVIII"
输出: 58
解释: C = 100, L = 50, XXX = 30, III = 3.

示例 5:

输入: "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.

/*** @param {string} s* @return {number}*/
var romanToInt = function (s) {let charNum = {I: 1,V: 5,X: 10,L: 50,C: 100,D: 500,M: 1000,};let sum = 0;let len = s.length;for (let i = 0; i <= len; i++) {if (s[i] === "I") {if (s[i + 1] === "V" || s[i + 1] === "X") {sum += charNum[s[i + 1]] - charNum[s[i]];i++;continue;}} else if (s[i] === "X") {if (s[i + 1] === "L" || s[i + 1] === "C") {sum += charNum[s[i + 1]] - charNum[s[i]];i++;continue;}} else if (s[i] === "C") {if (s[i + 1] === "D" || s[i + 1] === "M") {sum += charNum[s[i + 1]] - charNum[s[i]];i++;continue;}}if (!s[i]) {break;}sum += charNum[s[i]];}return sum;
};

实在是想不出有什么办法能判断结果,看了别人的没想到这么简单

/*** @param {string} s* @return {number}*/
var romanToInt = function (s) {let charNum = {I: 1,V: 5,X: 10,L: 50,C: 100,D: 500,M: 1000,};let sum = 0;let len = s.length;for (let i = 0; i < len; i++) {if(charNum[s[i]]<charNum[s[i+1]]){sum-=charNum[s[i]];}else {sum+=charNum[s[i]];}}return sum;
};

转载于:https://www.cnblogs.com/sbzy/p/9398186.html

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

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

相关文章

android 自定义switch控件,Android中switch自定义样式

android 原生开关按钮控件 Switch 提供样式自定义方式&#xff0c;可供我们修改为适合我们开发使用的样式控件&#xff0c;自定义样式过程如下:自定义switch切换drawable新建swith_thumb.xml文件自定义switch轨道drawable新建switch_track.xmln文件,轨迹如果在选中与否过程并没…

具有瞬态属性的视图对象的钝化和激活

在应用程序模块的钝化/激活周期内&#xff0c;框架也会钝化并激活视图对象。 通常&#xff0c;框架保存有关VO状态&#xff0c;当前行&#xff0c;绑定变量值等的信息。 但是没有数据。 激活视图对象后&#xff0c;将重新执行VO的查询&#xff0c;并重新获取数据。 在大多数情况…

jsonobject修改key的值_JSON字符串操作移除空串更改key/value的介绍

对于JSON字符串的操作。移除键值、添加属性。//删除JSON对象value值var json[.....];delete(json[key]);或者delete(json.key);//添加对象objectjson.objectvalue;或者json[object]value;如果数据是查询数据库得到的&#xff0c;那么可能会存在空值&#xff0c;for循环JSON数据…

pre标签的样式

你可能正在使用 <pre> 标签。这是一个 HTML 中非常特别的标签&#xff0c;它允许其中的空格真正显示出来。例如&#xff1a;四个空格将真实显示成四个空格。这不同于其他标签通常的做法&#xff0c;其他标签会将之间的空白压缩成一个。从这一点来说&#xff0c;<pre&g…

从Hotspot JIT编译器打印生成的汇编代码

有时&#xff0c;在对Java应用程序进行性能分析时&#xff0c;有必要了解Hotspot JIT编译器生成的汇编代码。 这对于确定已做出的优化决策以及我们的代码更改如何影响生成的汇编代码非常有用。 在调试并行算法以确保已按预期应用可见性规则时&#xff0c;知道何时发出什么指令也…

js的闭包

function a(){var n 0;this.inc function () {n; console.log(n);}; } var c new a(); c.inc(); //控制台输出1 c.inc(); //控制台输出2 什么是闭包&#xff1f;这就是闭包&#xff01;&#xff01;有权访问另一个函数作用域内变量的函数都是闭包。当函数可以记住并访…

Background-size完美兼容IE

CSS3 新增的 background-size 是一个很有用的属性&#xff0c;用于定义背景图片的尺寸&#xff0c;有了这个属性&#xff0c;你就可以任意指定背景图片的大小。其中最常用的值应该要数 cover 了&#xff0c;该值能让背景图片缩放至填满整个容器&#xff0c;即使是图片面积小于容…

python第五章上机实践报告_第五章实践报告 - osc_kk5bjg1i的个人空间 - OSCHINA - 中文开源技术交流社区...

1.实践问题&#xff1a;工作分配问题2.问题描述设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法&#xff0c;对于给定的工作费用&#xff0c;为每一个人都分配1 件不同的工作&#xff0c;并使总费用达到最小。输入格式:输入数据的第一行有1 个正…

android服务下载,android服务之bindService和unService中下载任务中的应用

通过bindService方法来调用服务final Down down data;viewHolder.videoActionBtn.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {if(bEditMode) {// 处于编辑模式&#xff0c;点击删除deleteDown(down);} else {// 处于播放模式&…

02CSS文本样式08

day08 CSS文本样式   font-family设置字体   font-size文字大小   font-size绝对单位|相对单位   cm mm pt pc xx-small   x-small medium large small xx-large x-large   相对单位&#xff1a;px em % larger smaller   color文字颜色   color:颜色|十六进制…

Illustrator、Indesign与Photoshop

Adobe illustrator是一种应用于出版、多媒体和在线图像的工业标准矢量插画的软件&#xff0c;作为一款非常好的图片处理工具&#xff0c;Adobe Illustrator广泛应用于印刷出版、海报书籍排版、专业插画、多媒体图像处理和互联网页面的制作等&#xff0c;也可以为线稿提供较高的…

判断sem信号量为零_将信号量递减为零的进程崩溃时,如何恢复信号量?

我有多个使用g 编译的应用程序&#xff0c;它们在Ubuntu中运行。我正在使用命名信号量来协调不同进程之间的关系。除非 出现以下情况&#xff0c; 否则所有方法都可以正常工作&#xff1a;如果其中一个进程调用sem_wait()或sem_timedwait()使信号量递减&#xff0c;然后在有机会…

在Spring中使用Future对象调用Async方法调用

下一个示例将演示Spring容器内部的异步方法调用。 为什么我们需要异步方法调用&#xff1f; 在某些情况下&#xff0c;我们并不真正知道是否需要重播或何时应返回结果。 传统方式在Java EE的异步处理世界中&#xff0c;使用队列/主题。 我们可以在Spring中进行相同的操作&#…

select里加链接

html select标签加链接的方法有很多&#xff0c;接下来为大家介绍下几个比较经典的&#xff0c;,感兴趣的朋友可以参考下哈&#xff0c;希望可以帮助到你 第一种 &#xff1a; <SCRIPT languagejavascript> <!-- // open the related site windows function mbar…

android ipc 多个客户端,Android IPC之AIDL进阶篇

前言在Android IPC之AIDL中我介绍了如何使用AIDL进行多进程通信&#xff0c;不过由于当时个人水平有限&#xff0c;仅仅介绍了最基础的部分&#xff0c;所以本篇博客主要是在Android IPC之AIDL的基础上深入介绍下AIDL的进阶的几点理解以及用法。AIDL接口中的in out inout的含义…

mysql数据库(3)-查询

数据库设计规范 58到家数据库30条军规解读查询 创建数据库、数据表 -- 创建数据库 create database python_test_1 charsetutf8; -- 使用数据库 use python_test_1; -- students表 create table students( id int unsigned primary key auto_increment not null, name varchar(…

Spring Data Solr教程:向所有存储库添加自定义方法

如果我们在现实生活中的软件项目中使用Spring Data Solr&#xff0c;很可能我们迟早会遇到一个要求&#xff0c;该要求指出我们的应用程序必须能够与本地Solr服务器和SolrCloud进行通信 。 目前&#xff0c;满足此要求意味着我们必须向所有Spring Data Solr存储库添加自定义方法…

远程管理口怎么看地址_红烧羊肉怎么样做才能滋味浓郁,咸甜适口,且回味有奶香?看这里...

原汁原味红烧羊肉此菜在制作上不同于其他红烧羊肉时要放入香料去膻&#xff0c;但在选料上很讲究&#xff0c;也就是说食材的好坏决定菜的好坏。选用一年生的崇明母山羊制作&#xff0c;膻味很小&#xff0c;肉质软嫩细腻&#xff0c;且带有一股淡淡奶香&#xff0c;因此不必放…

css段落文字(中英文混杂)实现两端对齐

案例如下&#xff1a; 混合使用汉字和英文的段落默认如下&#xff1a; 两边是不对齐的(一般情况下&#xff0c;我们对这种情况不做处理&#xff0c;除非需求或者设计非要我们实现两端对齐)。 对齐之后如下&#xff1a; 实现思路 一般的两端对齐是使用text-align:justify&…

44集合:蒜头军学英语

转载于:https://www.cnblogs.com/passion-sky/p/8424769.html