题目
代码实现:
方法一(暴力法,分类讨论):
class Solution {
public String intToRoman(int num) {
StringBuilder sb = new StringBuilder();
if(num/1000 >=1){
int a = num/1000;
while(a>0){
sb.append("M");
a--;
}
num %= 1000;
}
if(num/500 >=1){
if(num >=900){
sb.append("CM");
num -= 900;
}else{
sb.append("D");
num %= 500;
}
}
if(num/100 >= 1){
if(num >=400){
sb.append( "CD");
num -= 400;
}else{
int b = num/100;
while(b>0){
sb.append("C");
b--;
}
num %= 100;
}
}
if(num/50 >= 1){
if(num>=90){
sb.append("XC");
num -= 90;
}else{
int c = num/50;
while(c>0){
sb.append("L");
c--;
}
num %= 50;
}
}
if(num/10>=1){
if(num>=40){
sb.append("XL");
num-=40;
}else{
int d = num/10;
while(d>0){
sb.append("X");
d--;
}
num %= 10;
}
}
if(num/5 == 1){
if(num == 9){
sb.append("IX");
num -= 9;
}else{
sb.append("V");
num %= 5;
}
}
if(num == 4){
sb.append("IV");
num -= 4;
}
if(num < 4){
int e = num;
while(e>0){
sb.append("I");
e--;
}
num = 0;
}
return sb.toString();
}
}
方法二(数组法):
class Solution {
public String intToRoman(int num) {
int[] values = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
String[] key = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
int addr = 0;
StringBuilder sb = new StringBuilder();
while(num>0){
if(num>=values[addr]){
sb.append(key[addr]);
num -= values[addr];
}else{
addr++;
}
}
return sb.toString();
}
}