罗马数字 java_【leetcode刷题】[简单]13.罗马数字转整数(roman to integer)-java
罗马数字转整数 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相关推荐
- LeetCode刷题记录13——705. Design HashSet(easy)
LeetCode刷题记录13--705. Design HashSet(easy) 目录 LeetCode刷题记录13--705. Design HashSet(easy) 前言 题目 语言 思路 源 ...
- LeetCode刷题实战371:两整数之和
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- 【leetcode刷题】73.商品折扣后的最终价格——Java版
⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 法1 - 暴力:时间复杂度O(n^2) 对于每个i位置找j. 法2 - 单调栈 时间复杂度O(n) --leetcode此题热评 ...
- 【leetcode刷题】51.下一个更大元素 I——Java版
⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 算法不行,现在语文也不行了.我哭了,你们呢? --leetcode此题热评 前言 哈喽,大家好,我是一条. 糊涂算法,难得糊涂 & ...
- LeetCode刷题13-简单-罗马数字转整数
文章目录 前言 一.题目描述 二.题目解析 三.代码 结语 前言 算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题! 第一遍,不求最优解,但求能过!!!
- LeetCode刷题(13)
Plus One 在一个有数列表示的数的基础上加一 class Solution(object):def plusOne(self, digits):""":type d ...
- 《LeetCode刷题》804. 唯一摩尔斯密码词(java篇)
题目描述: 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: 'a' 对应 ".-" , 'b' 对应 "-..." ...
- LeetCode刷题实战375:猜数字大小 II
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)
LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...
最新文章
- Docker应用:Kubernetes(容器集群)
- 人生最重要的十个健康伴侣
- asp.net基础 笔试题(全解完整答案)
- cat6 万兆_CAT6、CAT6A超六类和CAT7七类网线哪个更适合10GBASE-T万兆网络?
- 网易云音乐api使用—基于node.js服务器
- 【弄nèng - SearchGuard】应用篇 —— Windows下elasticsearch5.2.2 安装SearchGuard5.2.2
- 庄子 君子之交淡如水,小人之交甘若醴。
- U盘安装Win Server 2008
- Python安装libsvm
- 序 -- 慕司板IAP15
- AI人工智能学习之激活函数
- HTTP RPC Dubbo hsf Spring-cloud 图解比较
- 北京,有2000万人假装在生活
- 计算机灾难性恢复,计算机灾难恢复有哪些不同的选择(Different Options for Computer Disaster Recovery)?...
- 【大咖有约】1号店周航:1号店搜索实时更新架构实践
- 就..而言as far as ..is concerned
- 阿翔编程学-Axis日志服务类
- John the Ripper 安装
- 关于.m4s音视频文件合成.mp4文件的方法
- C++的 remove函数
热门文章
- eclipse源服务器未能找到,eclipse - HTTP状态[404]? [未找到](原始服务器未找到当前表示) - 堆栈内存溢出...
- activiti idea 请假流程_IDEA开发流程Activiti需要注意的一些坑
- jvm配置参数,查看大对象直接分配到老年代
- linux原理 培训,Linux容器技术原理和使用
- mysql中基本的DDL语句(关注一下,以后会继续更新喔!)
- 100个网络基础必备知识 ,值得收藏!
- 数据优化:求求你别再用offset和limit分页了
- Linux中shell变量基础概念笔记
- 用VS2017开发安卓应用
- MongoDB高可用集群搭建