Integer to Roman
问题简介:将输入的int类型数字转化为罗马数字
问题详解:罗马数字由七个不同的符号表示:I,V,X,L,C,D和M
符号-数值
I - 1
V - 5
X -10
L - 50
C - 100
D - 500
M - 1000
例如,2用罗马数字写成II,只有两个I加在一起,十二写为XII,解释为X + II, 二十七写成XXVII,即XX + V + II,
罗马数字通常从左到右从最大到最小,但是,四个数字不是IIII,相反,第四个写为IV,因为一个在五个之前,我们减去四个,同样的原则适用于九,即IX,有六个使用减法的实例:
我可以放在V(5)和X(10)之前做4和9,
X可以放在L(50)和C(100)之前,以产生40和90,
C可以放在D(500)和M(1000)之前,以产生400和900,
给定一个整数,将其转换为罗马数字。,输入保证在1到3999的范围内.
举例:
1:
输入: 3
输出: “III”
2:
输入: 4
输出: “IV”
3:
输入: 9
输出: “IX”
4:
输入: 58
输出: “LVIII”
解释: L = 50, V = 5, III = 3.
5:
输入: 1994
输出: “MCMXCIV”
解释: M = 1000, CM = 900, XC = 90 and IV = 4.
解法一:
我这可能算穷举法。。。
因为输入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
class Solution {
public String intToRoman(int num) {
if(num < 0 ||num >3999)return "";
String one = "";
String two = "";
String three = "";
String four = "";
int x = num%10;
num = num/10;
switch(x){
case 1:
one = new String("I");
break;
case 2:
one = new String("II");
break;
case 3:
one = new String("III");
break;
case 4:
one = new String("IV");
break;
case 5:
one = new String("V");
break;
case 6:
one = new String("VI");
break;
case 7:
one = new String("VII");
break;
case 8:
one = new String("VIII");
break;
case 9:
one = new String("IX");
break;
}
x = num%10;
num = num/10;
switch(x){
case 0:
break;
case 1:
two = new String("X");
break;
case 2:
two = new String("XX");
break;
case 3:
two = new String("XXX");
break;
case 4:
two = new String("XL");
break;
case 5:
two = new String("L");
break;
case 6:
two = new String("LX");
break;
case 7:
two = new String("LXX");
break;
case 8:
two = new String("LXXX");
break;
case 9:
two = new String("XC");
break;
}
x = num%10;
num = num/10;
switch(x){
case 0:
break;
case 1:
three = new String("C");
break;
case 2:
three = new String("CC");
break;
case 3:
three = new String("CCC");
break;
case 4:
three = new String("CD");
break;
case 5:
three = new String("D");
break;
case 6:
three = new String("DC");
break;
case 7:
three = new String("DCC");
break;
case 8:
three = new String("DCCC");
break;
case 9:
three = new String("CM");
break;
}
x = num%10;
num = num/10;
switch(x){
case 0:
break;
case 1:
four = new String("M");
break;
case 2:
four = new String("MM");
break;
case 3:
four = new String("MMM");
break;
}
String result = four + three + two + one;
return result;
}
}
小白刷题之路,请多指教— — 要么大器晚成,要么石沉大海