罗马数字转整数 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.

代码模板:

class Solution {

public int romanToInt(String s) {

}

}

分析

看到这个题目首先要做一个Map映射,即罗马数字与int的一个映射。

循环这个罗马数字

如果当前值>=下一个值,那就需要result+当前值。

如果当前值

解答

class Solution {

public int romanToInt(String s) {

if(null == s || s.length() == 0 ){

return -1;

}

HashMap map = new HashMap();

map.put('I', 1);

map.put('V', 5);

map.put('X', 10);

map.put('L', 50);

map.put('C', 100);

map.put('D', 500);

map.put('M', 1000);

int len = s.length();

int result = 0;

if(len == 1){

return map.get(s.charAt(0));

}

for (int i = 0; i < len-1; i++) {

if (map.get(s.charAt(i)) >= map.get(s.charAt(i + 1)))

result = result + map.get(s.charAt(i));

else

result = result - map.get(s.charAt(i));

}

return result+ map.get(s.charAt(len-1));

}

}

罗马数字 java_【leetcode刷题】[简单]13.罗马数字转整数(roman to integer)-java相关推荐

  1. LeetCode刷题记录13——705. Design HashSet(easy)

    LeetCode刷题记录13--705. Design HashSet(easy) 目录 LeetCode刷题记录13--705. Design HashSet(easy) 前言 题目 语言 思路 源 ...

  2. ​LeetCode刷题实战371:两整数之和

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  3. 【leetcode刷题】73.商品折扣后的最终价格——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 法1 - 暴力:时间复杂度O(n^2) 对于每个i位置找j. 法2 - 单调栈 时间复杂度O(n) --leetcode此题热评 ...

  4. 【leetcode刷题】51.下一个更大元素 I——Java版

    ⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 算法不行,现在语文也不行了.我哭了,你们呢? --leetcode此题热评 前言 哈喽,大家好,我是一条. 糊涂算法,难得糊涂 & ...

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

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

  6. LeetCode刷题(13)

    Plus One 在一个有数列表示的数的基础上加一 class Solution(object):def plusOne(self, digits):""":type d ...

  7. 《LeetCode刷题》804. 唯一摩尔斯密码词(java篇)

    题目描述: 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "-..." ...

  8. ​LeetCode刷题实战375:猜数字大小 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

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

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

最新文章

  1. Docker应用:Kubernetes(容器集群)
  2. 人生最重要的十个健康伴侣
  3. asp.net基础 笔试题(全解完整答案)
  4. cat6 万兆_CAT6、CAT6A超六类和CAT7七类网线哪个更适合10GBASE-T万兆网络?
  5. 网易云音乐api使用—基于node.js服务器
  6. 【弄nèng - SearchGuard】应用篇 —— Windows下elasticsearch5.2.2 安装SearchGuard5.2.2
  7. 庄子 君子之交淡如水,小人之交甘若醴。
  8. U盘安装Win Server 2008
  9. Python安装libsvm
  10. 序 -- 慕司板IAP15
  11. AI人工智能学习之激活函数
  12. HTTP RPC Dubbo hsf Spring-cloud 图解比较
  13. 北京,有2000万人假装在生活
  14. 计算机灾难性恢复,计算机灾难恢复有哪些不同的选择(Different Options for Computer Disaster Recovery)?...
  15. 【大咖有约】1号店周航:1号店搜索实时更新架构实践
  16. 就..而言as far as ..is concerned
  17. 阿翔编程学-Axis日志服务类
  18. John the Ripper 安装
  19. 关于.m4s音视频文件合成.mp4文件的方法
  20. C++的 remove函数

热门文章

  1. eclipse源服务器未能找到,eclipse - HTTP状态[404]? [未找到](原始服务器未找到当前表示) - 堆栈内存溢出...
  2. activiti idea 请假流程_IDEA开发流程Activiti需要注意的一些坑
  3. jvm配置参数,查看大对象直接分配到老年代
  4. linux原理 培训,Linux容器技术原理和使用
  5. mysql中基本的DDL语句(关注一下,以后会继续更新喔!)
  6. 100个网络基础必备知识 ,值得收藏!
  7. 数据优化:求求你别再用offset和limit分页了
  8. Linux中shell变量基础概念笔记
  9. 用VS2017开发安卓应用
  10. MongoDB高可用集群搭建