Leetcode_12_Integer to Roman
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42744649
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
思路:
(1)题意为给定任意1—3999的整数,将其转化为罗马数字。
(2)该题和将罗马数字转化为整数类似,详见罗马数字转化为整数。
(3)由于技术有限,本文还是先运用“暴力破解”的思想,对于1-10、10-100、100-1000、1000-3999分别进行讨论,由于比较简单,这里就不累赘了,详情见下方代码。
(4)希望本文对你有所帮助。
算法代码实现如下:
/**
* @author liqq
*/
public String intToRoman(int num) {
Map<Integer, String> maps = new HashMap<Integer, String>();
maps.put(1,"I");
maps.put(2,"II");
maps.put(3,"III");
maps.put(4,"IV");
maps.put(5,"V");
maps.put(6,"VI");
maps.put(7,"VII");
maps.put(8,"VIII");
maps.put(9,"IX");
maps.put(10,"X");
maps.put(20,"XX");
maps.put(30,"XXX");
maps.put(40,"XL");
maps.put(50,"L");
maps.put(60,"LX");
maps.put(70,"LXX");
maps.put(80,"LXXX");
maps.put(90,"XC");
maps.put(100,"C");
maps.put(200,"CC");
maps.put(300,"CCC");
maps.put(400,"CD");
maps.put(500,"D");
maps.put(600,"DC");
maps.put(700,"DCC");
maps.put(800,"DCCC");
maps.put(900,"CM");
maps.put(1000,"M");
maps.put(2000,"MM");
maps.put(3000,"MMM");
StringBuffer buffer = new StringBuffer();
if(num<=10){
return maps.get(num);
}else if(num>10 && num<100){
int index = num/10;
buffer.append(maps.get(index*10));
if(num-index*10>0){
buffer.append(maps.get(num-index*10));
}
return buffer.toString();
}else if(num>=100 && num<1000){
int hun = num/100;
buffer.append(maps.get(hun*100));
int te = (num-hun*100)/10;
if(te>0){
buffer.append(maps.get(te*10));
}
if(num-hun*100-te*10>0){
buffer.append(maps.get(num-hun*100-te*10));
}
return buffer.toString();
}else if(num>=1000 &&num<=3999){
int th = num/1000;
buffer.append(maps.get(th*1000));
int hun = (num-th*1000)/100;
if(hun>0){
buffer.append(maps.get(hun*100));
}
int te = (num-th*1000-hun*100)/10;
if(te>0){
buffer.append(maps.get(te*10));
}
if(num-th*1000-hun*100-te*10>0){
buffer.append(maps.get(num-th*1000-hun*100-te*10));
}
return buffer.toString();
}
return buffer.toString();
}
Leetcode_12_Integer to Roman的更多相关文章
- [LeetCode] Roman to Integer 罗马数字转化成整数
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...
- [LeetCode] Integer to Roman 整数转化成罗马数字
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...
- 【leetcode】Roman to Integer
题目描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...
- [Leetcode] Roman to Integer
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...
- Integer to Roman -- LeetCode 012
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...
- 【LeetCode】Roman to Integer & Integer to Roman
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
- No.013:Roman to Integer
问题: Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from ...
- 【leetcode】Integer to Roman
Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within t ...
- 【leetcode】Integer to Roman & Roman to Integer(easy)
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
随机推荐
- pthon核心编程-读书笔记:知识点摘录与总结(方便理解和快速记忆)
Python 中的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的.在核心语言中提供这些重要的构建单元,可以鼓励人们使用它们, 缩短开发时间与代码量,产生出可读性更好的代码.C不提供, c+ ...
- Python 3 函数自由变量的大坑
Python中函数是一个对象, 和整数,字符串等对象有很多相似之处,例如可以作为其他函数的参数或返回对象, Python中的函数还可以携带自由变量, 两者无疑极大增进了Python的表达力. 但是Py ...
- hive数据类型及其数据转换
由于需要使用hive sql进行数据查询,同时涉及多个不同类型的字段的组合,看Hive sql的文档相关和资料才知道,hive是支持大部分基础数据类型之间的相互转换的. 那么,hive本身支持哪些数据 ...
- XMPP系列(七)---获取群组列表
上一篇介绍了如何创建群组,这一篇就介绍一下,如何获取自己的群组列表. 在上一篇有提到,如果我们创建的群组是公共的群组,那么获取自己的群组列表时,会获取到自己的群组列表和那些公共的群组.而实际做社交的应 ...
- Nhibernate系列学习之(一) ORM and Nhibernate入门实例解析
最近框架项目需要,数据层想使用Nhibernate,代替传统的sql语句的写法,更加使用面向对象的思维来维护实体与数据库的这层关系映射(ORM),好在之前接触过Java时学习使用了Hibernate, ...
- Spark技术内幕: Task向Executor提交的源码解析
在上文<Spark技术内幕:Stage划分及提交源码分析>中,我们分析了Stage的生成和提交.但是Stage的提交,只是DAGScheduler完成了对DAG的划分,生成了一个计算拓扑, ...
- Dynamics CRM2013/2015 插件注册工具登录后无法显示assembly列表问题的解决办法二
本篇接前面的一篇博文:http://blog.csdn.net/vic0228/article/details/47079717,前篇提供了一种解决方案,将本机系统的语言切换成英文即可,今天再来介绍第 ...
- iOS 中如何判断当前是2G/3G/4G/5G/WiFi
5G 什么的,还得等苹果API更新啊,不过将来还是这个处理过程就是了. 关于判断当前的网络环境是2G/3G/4G,这个问题以前经常看到,最近在一工程里看到了如果判断的API.而在撸WebRTC音视频通 ...
- SpringMVC源码分析--容器初始化(三)HttpServletBean
在上一篇博客springMVC源码分析--容器初始化(二)DispatcherServlet中,我们队SpringMVC整体生命周期有一个简单的说明,并没有进行详细的源码分析,接下来我们会根据博客中提 ...
- Java线程的状态
Java线程的状态 线程对象在不同的运行时期有不同的状态,状态信息就存在于Thread中的State枚举中,如下所示: public enum State { /** * 至今尚未启动的线程处于这种状 ...