题目内容

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/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 。同样地,数字 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.

提示:

  • 1 <= s.length <= 15
  • s 仅含字符 (‘I’, ‘V’, ‘X’, ‘L’, ‘C’, ‘D’, ‘M’)
  • 题目数据保证 s 是一个有效的罗马数字,且表示整数在范围 [1, 3999] 内
  • 题目所给测试用例皆符合罗马数字书写规则,不会出现跨位等情况。
  • IL 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX 。
  • 关于罗马数字的详尽书写规则,可以参考 罗马数字 - Mathematics 。

题解

个人题解(一):

class Solution {public:int romanToInt(string s) {unordered_map<char, int> romanToIntTable = {{'I', 1},{'V', 5},{'X', 10},{'L', 50},{'C', 100},{'D', 500},{'M', 1000}};int n = s.length();int result = 0;for (int i = 0; i < n; i++){int value = romanToIntTable[s[i]];if (i < n-1 && value < romanToIntTable[s[i+1]]){result -= value;}else{result += value;}}return result;}
};

执行结果

执行结果:通过
执行用时:16 ms, 在所有 C++ 提交中击败了50.40%的用户
内存消耗:7.4 MB, 在所有 C++ 提交中击败了65.98%的用户

LeetCode-13.罗马数字转整数相关推荐

  1. c语言罗马数字换成整数,leetcode 13 罗马数字转整数 C语言

    leetcode 13 罗马数字转整数 原题 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 ...

  2. Python LeetCode(13.罗马数字转整数)

    Python LeetCode(13.罗马数字转整数) 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M ...

  3. Leetcode 13.罗马数字转整数

    Leetcode 13.罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 100 ...

  4. LeetCode 13罗马数字转整数14最长公共前缀

    罗马数字转整数 上一题是整数转罗马数字,这题是罗马数字转整数.虽然是简单题,但我感觉其实有点烦. 上一次是数字转字符,这次是字符转数字,总的来说大体思想还是差不多的. 首先整个字符串可能是这样构造的: ...

  5. Leetcode 13 罗马数字转整数数字

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             10 L ...

  6. Leetcode(13)罗马数字转整数

    题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II , ...

  7. LeetCode——13. 罗马数字转整数

    题目描述: 注:本分类博客中的所有代码可以直接拷贝到eclipise 代码: import java.io.BufferedReader; import java.io.IOException; im ...

  8. LeetCode 13 罗马数字转整数[找规律 多条件判断] HERODING的LeetCode之路

    解题思路: 两种解题方法,第一种就是硬判断,把所有情况都考虑进去,一共十三种条件,怎么说还是有点麻烦的,代码如下: class Solution {public:int romanToInt(stri ...

  9. LeetCode 13 罗马数字转整数

    https://leetcode-cn.com/problems/roman-to-integer/ 解决方案 class Solution {int[] values = {1000, 900, 5 ...

  10. LeetCode(13.罗马数字转整数) JAVA Hashmap

    LeetCode(13.罗马数字转整数) JAVA Hashmap 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D ...

最新文章

  1. B S架构 服务器虚拟化,B/S 架构及 Tomcat
  2. 科大讯飞裁员!提前就餐4秒被优化,员工们都这样议论
  3. (七)日志采集工具sleuth--分布式链路跟踪(zipkin)
  4. TensorFlow 1.13.0 正式发布,谷歌开源的机器学习框架
  5. 多线程之HttpClient
  6. oracle中的柱状图,详解Oracle中XMI开发UML图表技术
  7. NYOJ 864 统计
  8. Shell(8)——for、while、until
  9. TCL座机日期时间调整
  10. 《MySQL——InnoDB与Memory以及临时表》
  11. 阿里云 推荐码   为自己省钱
  12. distenct oracle_oracle中distinct的用法详解
  13. mui与java开发实例_mui开发的app例子,非常好资源,适合初学者
  14. ubuntu安装ssh无法连接解决日志(已解决,可连接)-转
  15. CentOS 6.5 安装 Redis 执行 make #error Newer version of jemalloc required
  16. boost::enable_shared_from_this<T>用途
  17. 使用PMT和IPMT在Excel中显示贷款付款
  18. 3.0.0 alpha 重磅发布!九大新功能、全新 UI 解锁调度系统新能力
  19. Shallow heap Retained heap
  20. 华为机试:身高体重排序(仅有题,待求解)

热门文章

  1. 一维前缀和,二维前缀和,一维差分,二维差分(翻译)
  2. 结构数组-创建结构数组---获取修改结构数组数据-------操作字段
  3. R语言中%in%的作用
  4. 洛谷P2147[SDOI2008]洞穴勘测
  5. Java-Runoob-高级教程-实例-数组:03. Java 实例 – 获取数组长度-*
  6. C语言第七讲,函数入门.
  7. Editor GUI 的 Gamma Correction
  8. FastDFS特性及问题思考
  9. [NOIP2011]聪明的质检员
  10. [转载] 浅析Java中volatile关键字及其作用