码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode——Integer to Roman

时间:2014-06-30 09:28:05      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:leetcode

Given an integer, convert it to a roman numeral.

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

给定一个整数,把它转换成罗马数字。

输入可以保证在1到3999之间。

下图是转换规则。

1
2
3
4
5
6
7
8
9
I
II
III
IV
V
VI
VII
VIII
IX
                 
10
20
30
40
50
60
70
80
90
X
XX
XXX
XL
L
LX
LXX
LXXX
XC
                 
100
200
300
400
500
600
700
800
900
C
CC
CCC
CD
D
DC
DCC
DCCC
CM

下面的程序用的是穷举,即把上面的表格用if else 写了一遍。当然这课表也是有规律的,如1-3开头的是重复,4-5截取后一个字符,6-8又是依次添一个尾字符。

	public static String intToRoman(int num) {
		StringBuffer buf = new StringBuffer();
		int dddd = num / 1000;
		int ddd = num % 1000 / 100;
		int dd = num % 1000 % 100 / 10;
		int d = num % 1000 % 100 % 10;
		for(int i=0;i<dddd;i++)
			buf.append("M");
		
		if(ddd == 1)
			buf.append("C");
		else if(ddd == 2)
			buf.append("CC");
		else if(ddd == 3)
			buf.append("CCC");
		else if(ddd == 4)
			buf.append("CD");
		else if(ddd == 5)
			buf.append("D");
		else if(ddd == 6)
			buf.append("DC");
		else if(ddd == 7)
			buf.append("DCC");
		else if(ddd == 8)
			buf.append("DCCC");
		else if(ddd == 9)
			buf.append("CM");
		
		if(dd == 1)
			buf.append("X");
		else if(dd == 2)
			buf.append("XX");
		else if(dd == 3)
			buf.append("XXX");
		else if(dd == 4)
			buf.append("XL");
		else if(dd == 5)
			buf.append("L");
		else if(dd == 6)
			buf.append("LX");
		else if(dd == 7)
			buf.append("LXX");
		else if(dd == 8)
			buf.append("LXXX");
		else if(dd == 9)
			buf.append("XC");
		
		if(d == 1)
			buf.append("I");
		else if(d == 2)
			buf.append("II");
		else if(d == 3)
			buf.append("III");
		else if(d == 4)
			buf.append("IV");
		else if(d == 5)
			buf.append("V");
		else if(d == 6)
			buf.append("VI");
		else if(d == 7)
			buf.append("VII");
		else if(d == 8)
			buf.append("VIII");
		else if(d == 9)
			buf.append("IX");
		return buf.toString();
	}

整数和罗马数字的转换规则见此 http://www.mathsisfun.com/roman-numerals.html 。

LeetCode——Integer to Roman,布布扣,bubuko.com

LeetCode——Integer to Roman

标签:leetcode

原文地址:http://blog.csdn.net/laozhaokun/article/details/35579687

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!