Integer to Roman 问题
Integer to Roman 问题
1.问题描述
Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.
题目翻译:
把给定的一个整数翻译成罗马数字,这个整数限定在1到3999范围内。
2.解题思路
这道题给的范围很巧妙,因为在1-3999这个范围内罗马数字是有规律可寻的:
{"","I","II","III","IV","V","VI","VII","VIII","IX"},
{"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},
{"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},
{"","M","MM","MMM"}
可以看到每一行只下标为4、5、9、的比较特殊,其他I、X、C、M分别代表1、10、100、1000,而V、L、D分别代表5、50、500,在此基础上构成了各个数值,也就是说只要能判断出这些特殊的情况,就能解决问题。但是当然这道题也可以用暴力解法,把这个整数一步步分解成个、十、百、千来分别查找技能解决问题。
3.代码实现
- 暴力解法
class Solution {public String intToRoman(int num) {String[][] c={{"","I","II","III","IV","V","VI","VII","VIII","IX"},{"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},{"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},{"","M","MM","MMM"}};StringBuffer res = new StringBuffer();int tmp= 0;res.append(c[3][num / 1000 % 10]);res.append(c[2][num / 100 % 10]);res.append(c[1][num / 10 % 10]);res.append(c[0][num % 10]);return res.toString();}
}
- 利用特殊数字
class Solution {public String intToRoman(int num) {StringBuffer str = new StringBuffer(); String [] symbol = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; int [] value = {1000,900,500,400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; for(int i=0;num!=0;i++){ while(num >= value[i]){//循环是为了处理重复的情况num -= value[i]; str.append(symbol[i]); } } return str.toString(); }
}
转载于:https://www.cnblogs.com/chailinbo/p/7515804.html
Integer to Roman 问题相关推荐
- leetcode 12 ,13 Integer to Roman amp;amp;Roman to Integer 罗马与阿拉伯数组转换
12 Integer to Roman 13 Roman to Integer 有可能不注意的结果: class Solution {public:/*1.相同的数字连写,所表示的数等于这些数字相加得 ...
- lintcode :Integer to Roman 整数转罗马数字
题目 整数转罗马数字 给定一个整数,将其转换成罗马数字. 返回的结果要求在1-3999的范围内. 样例 4 -> IV 12 -> XII 21 -> XXI 99 -> XC ...
- LeetCode算法入门- Roman to Integer Integer to Roman -day8
LeetCode算法入门- Roman to Integer -day8 Roman to Integer: 题目描述: Roman numerals are represented by seven ...
- Roman to Integer/Integer to Roman
1 Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within ...
- 整数转换为罗马数字 Integer to Roman
2019独角兽企业重金招聘Python工程师标准>>> 问题: Given an integer, convert it to a roman numeral. Input is g ...
- [LeetCode]Integer to Roman
题目描述:(链接) Given an integer, convert it to a roman numeral. Input is guaranteed to be within the rang ...
- 【leetcode】Integer to Roman
最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法-- Question : Given an integer, convert it to a roman numeral. Input ...
- LeetCode 12. Integer to Roman
题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from ...
- 【LeetCode】12. Integer to Roman 整型数转罗马数
题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from ...
最新文章
- 运维老鸟告诉你这个经典Zookeeper问题的根因
- git解决代码提交冲突
- 利用 FC OSS 快速搭建 Serverless 实时按需图像处理服务
- win7完整卸载oracle11,win7安装与卸载oracle11g(32)
- python 数据库查询系统_python查询数据库操作系统
- Bootstrap 轮番插件Collapse 调用方式
- Spring学习总结(26)——Spring事务原理详解
- 张高兴的 Xamarin.Android 学习笔记:(二)“Hello World”
- 梦想cad控件 android,梦想CAD控件 2018.7.26更新
- 配置远程jupyter notebook
- Silverlight常见问题解决方法
- 【数学建模】CUMCM-2014A 嫦娥三号软着陆过程 避障阶段图像处理
- 电脑桌面云便签怎么开启窗口置顶一直让悬浮便签显示在屏幕上?
- 树莓派2B使用360随身WiFi2代连接WiFi
- Kotlin:Outdated Kotlin Runtime问题修复
- Swap(交换函数)
- 金庸笔下武功最强的十人
- Python在数字后端中的应用(一)
- 线上线下模式暗藏专利风险?
- Unity 最近经验分享
热门文章
- Web Service之Soap请求响应内容中文编码解密
- [武道资料]《菲律宾短棍-单棍》(Edgar Sulite Lameco Escrima Single Stick)
- python壁纸程序代码_python设置windows桌面壁纸的实现代码
- datagrid分页传递参数_四类数据库分页实现方案总结之Mysql分页实现
- 订阅者java_RxJava:“java.lang.IllegalStateException:只允许一个订阅者!”
- vue php 增删改查,vue的增删改查(简单版)
- C++知识点54——RTTI(运行时类型识别)
- python里的体格是啥r_numpy.数组形状(R,1)和(R,)之间的差异
- this调用语句必须是构造函数中的第一个可执行语句_谈谈JavaScript中的函数构造式和new关键字...
- folders默认配置 shell_分布式存储Ceph RBD-Mirror灾备方案(二)镜像模式配置