lintcode -- 罗马数字转整数
来源:互联网 发布:dnf辅助官网源码 编辑:程序博客网 时间:2024/05/05 07:56
给定一个罗马数字,将其转换成整数。
返回的结果要求在1到3999的范围内。
什么是 罗马数字?
- https://en.wikipedia.org/wiki/Roman_numerals
- https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97
- http://baike.baidu.com/view/42061.htm
IV
-> 4
XII
-> 12
XXI
-> 21
XCIX
-> 99
/*
思路:
1.先建立一个map存入一些罗马符号对应的数字
2.先求出字符串最后一个罗马字符对应的数字res
3.从后开始遍历,如果后一个罗马符号大于前一个,则为res减去前一个罗马对应数字
如果后小于前,则加上
*/
public class Solution {
public int romanToInt(String s) {
if (s == null || s.length()==0) {
return 0;
}
Map<Character, Integer> m = new HashMap<Character, Integer>();
m.put('I', 1);
m.put('V', 5);
m.put('X', 10);
m.put('L', 50);
m.put('C', 100);
m.put('D', 500);
m.put('M', 1000);
int length = s.length();
//已经求出最后一个罗马数表示的整数
int res = m.get(s.charAt(length - 1));
//从尾到头遍历
for (int i = length - 1; i >= 1; i--) {
//VI 如果1<5
if (m.get(s.charAt(i)) <= m.get(s.charAt(i-1))) {
res += m.get(s.charAt(i-1));
//IV 如果5>1
} else {
res -= m.get(s.charAt(i-1));
}
}
return res;
}
}
- LintCode:整数转罗马数字
- Lintcode 罗马数字转整数
- [Lintcode]罗马数字转整数
- lintcode -- 罗马数字转整数
- lintcode -- 整数转罗马数字
- 整数转罗马数字-LintCode
- 罗马数字转整数-LintCode
- lintcode-罗马数字转整数-419
- *[lintcode] Integer to Roman 整数转罗马数字
- lintcode刷题——整数转罗马数字
- lintcode刷题——罗马数字转整数
- [LintCode 419] 罗马数字转整数(Python)
- LintCode笔记(2)——罗马数字转整数
- LintCode笔记(5)——整数转罗马数字
- LeetCode 罗马数字转整数
- 罗马数字转整数
- 整数转罗马数字
- LintCode_419_罗马数字转整数
- Java高手手记
- wait 和notify的使用
- VS2013 MFC 如何浏览文件并将路径显示到编辑框?
- G
- Scala学习—函数式编程之集合操作
- lintcode -- 罗马数字转整数
- Tic-Tac-Toe (第八届福建省赛)
- TensorFlow与中文手写汉字识别
- Servlet的生命周期
- PTA基础题目5-1 厘米换算英尺英寸 (15分)
- 多线程——创建线程方法之一(继承Thread类)
- 图像处理(2)空间滤波
- Java final关键字
- cnn:深入理解卷积网络