题目描述:

罗马数字包含以下七种字符: 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 的范围内。

示例 1:

输入: "III"
输出: 3
示例 2:

输入: "IV"
输出: 4
示例 3:

输入: "IX"
输出: 9
示例 4:

输入: "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.
示例 5:

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

提示:

题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。
IC 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX 。
关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/roman-to-integer

题解:

1.解题:利用map

       var romanToInt = function(s) {const map = {'I': 1,'IV': 4,'IX': 9,'V': 5,'X': 10,'XL': 40,'XC': 90,'L': 50,'C': 100,'CD': 400,'CM': 900,'D': 500,'M': 1000}var dList = ['IV', 'IX', 'XL', 'XC', 'CD', 'CM'],num = 0,sNext;var i = 0while (i <= s.length - 1) {sNext = s.charAt(i) + s.charAt(i + 1)if (dList.indexOf(sNext) !== -1) {num += map[sNext];i = i + 2} else {num += map[s.charAt(i)];i++}}return num;};

2.解题:利用switch

        var romanToInt = function(s) {var num = 0;for (var i = 0; i < s.length; i++) {var nextI = s.charAt(i + 1);switch (s.charAt(i)) {case 'I':if (nextI === 'V') {num += 4i = i + 1} else if (nextI === 'X') {num += 9i = i + 1} else {num += 1}break;case 'V':num += 5break;case 'X':if (nextI === 'L') {num += 40i = i + 1} else if (nextI === 'C') {num += 90i = i + 1} else {num += 10}break;case 'L':num += 50break;case 'C':if (nextI === 'D') {num += 400i = i + 1} else if (nextI === 'M') {num += 900i = i + 1} else {num += 100}break;case 'D':num += 500break;case 'M':num += 1000break;}}return num;};

leetcode算法刷题记录之罗马数字转整数相关推荐

  1. Ants (POJNo.1852)--数据结构与算法刷题记录

    数据结构与算法刷题记录1 时间:4.28 这是第一次用CSDN来记录自己的学习成果,在此留下纪念,希望自己能够坚持下去,变得更强. 本次学习记录来源于<挑战程序设计竞赛(第2版)> Ant ...

  2. LeetCode算法刷题目录 (Java)

    目录 1.数学基础 1.1.位运算 1.2.其它 2.数据结构 2.1.线性表 2.1.1.数组(双指针) 2.1.2.链表(双指针) 2.1.3.栈 2.1.4.队列 2.1.5.字符串 2.1.6 ...

  3. LeetCode算法刷题-URL化和重新排列字符串

    LeetCode刷题-URL化 面试题01.03 URL化 题目 URL化.编写一种方法,将字符串中的空格全部替换为%20.假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的"真实& ...

  4. LeetCode刷题13-简单-罗马数字转整数

    文章目录 前言 一.题目描述 二.题目解析 三.代码 结语 前言 算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题! 第一遍,不求最优解,但求能过!!!

  5. 数据结构与算法刷题记录

    数据结构与算法&程序语言 学习物料汇总: leetcode&牛客网 流畅的python 书签&网络搜索 leetcode 数据结构 数组 链表 栈&队列 字符串 算法 ...

  6. 岛屿最大面积 leetcode Java_LeetCode刷题记录——岛屿的最大面积

    题目描述: 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着. 找到给定 ...

  7. 算法刷题记录(Day 33)

    Balanced Lineup(poj 3264) 原题链接 题目类型:RMQ.ST表 RMQ视频讲解 RMQ以及ST表 存在的问题: 1.2的幂次应该如何计算->打表 2.log2 x转化为l ...

  8. leetcode算法算题记录-数组--二分查找

    public class 二分查找 {//注: 数组为有序数组且数组中无重复元素是使用二分法的前提//704.二分查找 简单//给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 ta ...

  9. 算法刷题记录(Day 16)

    棋局评估(csp 201803-4) 题目类型:博弈论.dfs.最大最小搜索 思路一:去模拟下棋,Alice和Bob轮流下棋,每次使用"最优策略"来决定下在哪里. "最优 ...

最新文章

  1. pytorch 加载不对齐预训练
  2. 5 Android数据存储 任务二 应用程序数据文件夹里的文件读写 ,
  3. Android 任意区域截屏
  4. struct结构体初始化3种方法
  5. LINUX系统服务总结之三:nis服务器全集
  6. lua运行外部程序_Lua 协同程序(coroutine)
  7. nginx编译安装和yum安装那个更好?
  8. awk去除行首行尾空格
  9. 【Oracle】Oracle错误编码大全
  10. 信息系统项目管理师 - 必考记忆口诀
  11. 影驰悍将120SSD盘只认20M,有时能认,有时认不到的修复
  12. phpstudy中的站点突然无法打开,明明路径打对也无法打开,解决办法
  13. Why Transformer works
  14. Python爬虫面试简历 经验分析
  15. css锚点定位不准确问题
  16. 魅族缘何成为双十一最冰火手机厂商
  17. 电路板参数有哪些参数
  18. componentWillUnmount父子组件触发先后
  19. php里面substr函数,PHP substr()函数
  20. Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null objec

热门文章

  1. win7 X64位安装hp激光打印机驱动
  2. 乐观锁和悲观锁的理解及如何实现,乐观锁的实现方式。看完你就明白了!
  3. 圆的半径和面积c语言流程图,设计一个算法:输入圆的半径 输出圆的面积
  4. odoo报错:from google.ads.googleads.client import GoogleAdsClient ModuleNotFoundError: No module named
  5. 中国品牌如何做海外营销?
  6. 1075: 聚餐人数统计 C语言
  7. [访客必读]麒麟子的故事
  8. B.FRIENDit壁虎忍者电竞游戏耳机CH3 耳麦7.1发光震动
  9. Gif动态图片库--GifView的基本使用
  10. Facebook 发币后的 48 小时