/*

罗马数字包含以下七种字符: 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 的范围内。*/
/*  思路:  将字符对应的值封装成键值对放入map中.

  如果 i字符的键比 i-1的键要大 ,说明产生了 IV这样 : I代表1,V代表5 ,值代表 4 的 串.  nums += value - 2 *valuePre

   否则就说明字符是按照从大到小的顺序排列     num += value */
 1 class Solution13 {
 2
 3   public int romanToInt(String s) {
 4     Map<Character, Integer> map = new HashMap<>();
 5     map.put('M', 1000);
 6     map.put('D', 500);
 7     map.put('C', 100);
 8     map.put('L', 50);
 9     map.put('X', 10);
10     map.put('V', 5);
11     map.put('I', 1);
12
13     int nums = 0;
14     nums += map.get(s.charAt(0));
15
16     for (int i = 1; i < s.length(); i++) {
17       int value = map.get(s.charAt(i));
18       int valuePre = map.get(s.charAt(i - 1));
19
20       nums += value;
21       if (valuePre < value) {
22         nums -= valuePre << 1;
23       }
24     }
25
26     return nums;
27   }
28 }

 


转载于:https://www.cnblogs.com/rainbow-/p/10257121.html

LeetCode第13题 罗马数字转整数相关推荐

  1. LeetCode:第13题 罗马数字转整数 python语言实现 2020.2.3

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

  2. LeetCode题组:第13题-罗马数字转整数

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

  3. LeetCode(13)——罗马数字转整数(JavaScript)

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

  4. 力扣13题---罗马数字转整数

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

  5. LeetCode高频题13:罗马数字转整数

    LeetCode高频题13:罗马数字转整数 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批ACM ...

  6. LeetCode简单-Python-(13)罗马数字转整数

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

  7. LeetCode第四天--罗马数字转整数

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

  8. C++ LeetCode简单程序:罗马数字转整数

    写在最前 无法掩饰算法写出来并且程序调试成功的喜悦感,并且会享受想方法和调试的过程.下面这个程序很简单,不过还是想要记录一下,因为当你不知道如何实现的时候,就是困难的. 题目描述 罗马数字包含以下七种 ...

  9. 算法题---罗马数字转整数

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

  10. leetcode系列--13.罗马数字转整数

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

最新文章

  1. 一文读懂序列建模(deeplearning.ai)之序列模型与注意力机制
  2. docker-ce版本私有仓库搭建
  3. ubuntu部署git
  4. awk、变量、运算符、if多分支
  5. python中导入模块队列_【每日学习】Python中模块的导入
  6. Codeforces数据结构(水题)小结
  7. iOS-仿智联字符图片验证码
  8. Linux网络协议栈:一个TCP链接的耗时
  9. poj 1743 二分答案+后缀数组 求不重叠的最长重复子串
  10. 平面上两直线的夹角求法解析
  11. 计算机c盘无法扩展,win10c盘无法扩展卷怎么办
  12. java 读取485_java通信 485
  13. java模拟器安卓7,指小游Java模拟器
  14. python实现输出日历_python实现输出日历
  15. 饮料自动售货机C++
  16. 经典例题:判断给定数组是否已经排好序
  17. 服务器名称显示 n a,EXCEL技巧 怎样消除vlookup找不到目标时出现的#N/A
  18. 链表(线性表的一种存储结构)
  19. JavaScript高级程序设计(第4版)学习随笔【第五章】
  20. 3d max材质添加透明贴图异常

热门文章

  1. 联众创始人鲍岳桥:52 岁还在熬夜写代码! | 人物志
  2. P1352 没有上司的舞会[树形dp]
  3. windows server 2003 远程桌面最大连接数调整与windows 2008远程桌面后,本地帐号自动锁定...
  4. Nios内部RAM固化配置
  5. wildfly access log 开启
  6. Ajax实现前台传值到后台
  7. 反射生成SQL语句入门
  8. 我的本科毕业论文——Messar即时通讯系统
  9. [原创]Datagrid和Button控件
  10. 强大的反编译软件Hopper Disassembler for Mac控制流程图详解