Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.


题解:转换的方法:从左往右扫描罗马字符,如果当前的字符对应的数字比上一个数字小,就直接加上这个数字;否则加上这个数字并且减去上一个数字的两倍,然后更新上一个数字。利用一个HashMap存放罗马字符和数字的对应。

罗马数字和阿拉伯数字的对应表格参见http://www.cnblogs.com/sunshineatnoon/p/3856057.html

例如罗马数字DCXIX:500+100+10+1+10-2 = 619

代码如下:

 1 public class Solution {
 2     public int romanToInt(String s) {
 3         if(s == null || s.length() == 0)
 4             return 0;
 5
 6         HashMap<Character, Integer> map= new HashMap<Character,Integer>();
 7         map.put('I', 1);
 8         map.put('V', 5);
 9         map.put('X', 10);
10         map.put('L', 50);
11         map.put('C', 100);
12         map.put('D', 500);
13         map.put('M', 1000);
14
15         int length = s.length();
16         int result = map.get(s.charAt(0));
17         int last = result;
18
19         for(int i = 1;i < length;i++){
20             int temp = map.get(s.charAt(i));
21             if(temp <= last)
22                 result += temp;
23             else
24                 result = result + temp - 2*last;
25             last = temp;
26         }
27
28         return result;
29     }
30 }

转载于:https://www.cnblogs.com/sunshineatnoon/p/3856080.html

【leetcode刷题笔记】Roman to Integer相关推荐

  1. LeetCode刷题笔记2——数组2

    LeetCode刷题笔记2--数组2 重塑数组 题目 在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原 ...

  2. 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)

    LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...

  3. 小何同学的leetcode刷题笔记 基础篇(01)整数反转

    小何同学的leetcode刷题笔记 基础篇(01)整数反转[07] *** [01]数学取余法*** 对数字进行数位操作时,常见的方法便是用取余的方法提取出各位数字,再进行操作 操作(1):对10取余 ...

  4. LeetCode刷题笔记汇总

    LeetCode刷题笔记汇总 第一次刷LeetCode写的一些笔记. 1.两数之和 3.无重复字符的最长子串 15.三数之和 18.四数之和 19.删除链表的倒数第 N 个结点 20.有效的括号 21 ...

  5. 【leetcode刷题笔记】动态规划

    #[leetcode刷题笔记]动态规划 石子游戏 public boolean stoneGame(int[] piles) {int N = piles.length;// dp[i][j] is ...

  6. LeetCode刷题笔记-动态规划-day4

    文章目录 LeetCode刷题笔记-动态规划-day4 55. 跳跃游戏 1.题目 2.解题思路 3.代码 45. 跳跃游戏 II 1.题目 2.解题思路 3.代码 LeetCode刷题笔记-动态规划 ...

  7. LeetCode刷题笔记- 15.三数之和

    LeetCode刷题笔记- 15.三数之和 C语言 题目 注意点 C语言 /*** Return an array of arrays of size *returnSize.* The sizes ...

  8. LeetCode刷题笔记第6题:Z字形变换

    LeetCode刷题笔记第6题:Z字形变换 想法: 要完成字符串根据给定的行数从上往下,从左到右完成Z字形排列.当只有一行时直接返回原字符串,当行数大于1时,先以行数构建一个行数数值个空字符串的列表, ...

  9. leetcode刷题笔记——二分查找

    leetcode刷题笔记--二分查找 目前完成的贪心相关的leetcode算法题序号: 中等:80,81 困难:4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com ...

  10. LeetCode刷题笔记(算法思想 四)

    LeetCode刷题笔记(算法思想 四) 七.动态规划 斐波那契数列 70. 爬楼梯 198. 打家劫舍 213. 打家劫舍 II 信件错排 母牛生产 矩阵路径 64. 最小路径和 62. 不同路径 ...

最新文章

  1. java ec_Java ECKey.setK方法代码示例
  2. Mac 安装 brew
  3. InsecureRequestWarning: Unverified HTTPS request is being made to host(requests证书警告)
  4. php 插入数据 不成功,thinkphp5连接oracle用insert插入数据失败
  5. mysql 远程load data,PyMySQL将(文件)数据加载到远程MySQL实例时发生错误/异常
  6. Oracle-11g-R2 RAC 环境下 GPnP Profile 文件
  7. 开源代码 不开源_提供开源代码反馈的4个最佳实践
  8. 国外一些知名ASP.Net开源CMS系统
  9. java的joptionpane空白_java – JOptionPane无法正确显示?
  10. linux http用户,HTTP完整请求过程
  11. 【转】字符编码笔记:ASCII、Unicode、UTF-8 和 Base64
  12. 教你一招最屌的阅读开源项目的姿势
  13. python装饰器详解 带参数-python中的装饰器详解
  14. (转)郭广昌:复星账上有400亿现金,未来十年一切围绕C2M战略
  15. mysql字符串拼接返回
  16. linux系统如何备份系统软件,Linux系统如何备份
  17. Excel怎么将两列数据合并成一列
  18. C++游戏开发入门制作:经典游戏拳皇97
  19. Android 压力测试 手机重启测试
  20. python实现炫酷字母雨

热门文章

  1. 【荐】纯CSS实现苹果MAC官方网站的菜单导航
  2. fedora core 7下如何安装Fcitx小企鹅输入法
  3. 几种web报表打印方案的比较
  4. DataRowVersion与DataRowState C#版
  5. strongswan 配置文件 /etc/ipsec.conf 速查手册1
  6. m40型工业机器人_从工业机器人编程及应用到数控机床的安装维修,一次都学习了...
  7. Arcgis javascript那些事儿(十八)——空间查询的几种方法
  8. ArcGIS中文注记图层发布服务后变乱码(方框乱码)/如何有效修改注记要素类文字样式
  9. golang web开发获取get、post、cookie参数
  10. table多行表头合并 vue_vue elementUI table 自定义表头和行合并的实例代码