012 Integer to Roman(Java)

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

先是了解罗马数的构成

基本字符
I

V

X

L

C

D

M
相应的阿拉伯数字表示为
1

5

10

50

100

500

1000
  1. 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
  2. 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
  3. 小的数字、(限于 Ⅰ、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
  4. 正常使用时、连写的数字重复不得超过三次;
  5. 在一个数的上面画一条横线、表示这个数扩大 1000 倍。

组数规则

编辑

有几条须注意掌握:

  1. 基本数字 Ⅰ、X 、C 中的任何一个、自身连用构成数目、或者放在大数的右边连用构成数目、都不能超过三个;放在大数的左边只能用一个;
  2. 不能把基本数字 V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目、只能使用一个;
  3. V 和 X 左边的小数字只能用 Ⅰ;
  4. L 和 C 左边的小数字只能用X;
  5. D 和 M 左边的小数字只能用 C。

对照举例

编辑

·个位数举例

Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9

·十位数举例

Ⅹ-10、Ⅺ-11、Ⅻ-12、XIII-13、XIV-14、XV-15、XVI-16、XVII-17、XVIII-18、XIX-19、XX-20、XXI-21、XXII-22、XXIX-29、XXX-30、XXXIV-34、XXXV-35、XXXIX-39、XL-40、L-50、LI-51、LV-55、LX-60、LXV-65、LXXX-80、XC-90、XCIII-93、XCV-95、XCVIII-98、XCIX-99

·百位数举例

C-100、CC-200、CCC-300、CD-400、D-500、DC-600、DCC-700、DCCC-800、CM-900、CMXCIX-999

·千位数举例

M-1000、MC-1100、MCD-1400、MD-1500、MDC-1600、MDCLXVI-1666、MDCCCLXXXVIII-1888、MDCCCXCIX-1899、MCM-1900、MCMLXXVI-1976、MCMLXXXIV-1984、MCMXC-1990、MM-2000、MMMCMXCIX-3999

参考http://baike.baidu.com/link?url=IKdRmd-342DSXb2crvWmakofIEcsD1nx8i4OAZnWS87wlMvQZIkGf-cloZquHe3AvzVjETR88JU2ZW4VVf4k3a

然后代码如下

	public  String getStr(String str,int i,String s1,String s2,String s3){
		switch(i){
		case 1:str+=s3;break;
		case 2:str+=s3+s3;break;
		case 3:str+=s3+s3+s3;break;
		case 4:str+=s3+s2;break;
		case 5:str+=s2;break;
		case 6:str+=s2+s3;break;
		case 7:str+=s2+s3+s3;break;
		case 8:str+=s2+s3+s3+s3;break;
		case 9:str+=s3+s1;break;
		}
		return str;
	}
    public  String intToRoman(int num) {
    	int ge,shi,bai,qian;
    	String string="";
    	if((qian=num/1000)!=0){
    		num=num%1000;
    		switch(qian){
    		case 3:string+="MMM";break;
    		case 2:string+="MM";break;
    		case 1:string+="M";
    		}
    	}
    	if((bai=num/100)!=0){
    			num=num%100;
    			string=getStr(string,bai,"M","D","C");
    	}
    	if((shi=num/10)!=0){
    			num=num%10;
    			string=getStr(string,shi,"C","L","X");
    	}
    	if((ge=num)!=0){
    			string=getStr(string,ge,"X","V","I");
    	}
    	return string;
    }
时间: 2024-10-10 14:08:04

012 Integer to Roman(Java)的相关文章

Leetcode 12. Integer to Roman(python)

class Solution(object): def intToRoman(self, num): """ :type num: int :rtype: str """ M=["","M","MM","MMM"] C=["","C","CC","CCC","CD",&

Integer to Roman leetcode java

题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 题解: 这道题..还有哪个roman to integer..第一件事 就是先把roman认全吧.. 罗马数字拼写规则(转自Wikipedia:http://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97)

编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码

转自:编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码 JDK:java version “1.8.0_31”Java(TM) SE Runtime Environment (build 1.8.0_31-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)OS:win7 64bitcmake:V2.8.12/V3.2.2LTP:V3.2.0LTP4J:V1.0Microsoft VS C+

计算器(java)

最近学习了一下java语言,用它写了个小计算器.当然,功能还很简单,感兴趣的朋友可以自己看看,或者交流.程序 有三部分组成: 首先主程序calculate.java传入字符串(如"2+8*6-5="),代码如下: import calculatelib.expression; import calculatelib.calculator; public class calculate { public static void main(String[] args) { expressi

微信公众账号第三方平台全网发布源码(java)- 实战测试通过

(更多资料,关注论坛:www.jeecg.org) package org.jeecgframework.web.rest.controller; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import

Android(java)学习笔记205:网易新闻客户端应用编写逻辑过程

1.我们的项目需求是编写一个新闻RSS浏览器,RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS目前广泛用于网上新闻频道,blog和wiki,主要的版本有0.91, 1.0, 2.0.使用RSS订阅能更快地获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新.网络用户可以在客户端借助于支持RSS的聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容. 例如如下的网易RSS订阅: 2.由于我们这

算法笔记_071:SPFA算法简单介绍(Java)

目录 1 问题描述 2 解决方案 2.1 具体编码   1 问题描述 何为spfa(Shortest Path Faster Algorithm)算法? spfa算法功能:给定一个加权连通图,选取一个顶点,称为起点,求取起点到其它所有顶点之间的最短距离,其显著特点是可以求含负权图的单源最短路径,且效率较高.(PS:引用自百度百科:spfa是求单源最短路径的一种算法,它还有一个重要的功能是判负环(在差分约束系统中会得以体现),在Bellman-ford算法的基础上加上一个队列优化,减少了冗余的松弛

基于贪心算法求解TSP问题(JAVA)

前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 一.TSP问题 TSP问题(Travelling Salesman Problem)即旅行商问题,又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市.路径的选择目标是要求得的路径路程为所有路径之中的最小值. TSP问题

《阿里巴巴编码规范(JAVA)》认证考后感

2018.02.15除夕拿下了阿里云认证的<阿里巴巴编码规范(JAVA)>认证,写下这篇考后感,记录考试中碰到的一些考点. 先总体介绍下这个考试规则,50道选择题,大部分是多选题,有少部分单选,满分100分,达到80分即可拿到证书. 传送门:https://edu.aliyun.com/certification/cldt02 绝大部分的考题涉及到的知识点都能在<阿里巴巴JAVA开发手册>上找到,这些都是比较基础的考点,相信对大多数有工作经验的猿们来说,不是难题,这一部分笔者就不再