解法一:递归判断
class Solution {
public String intToRoman(int num) {
return(toStr(num));
}
public String toStr(int num){
StringBuilder temp = new StringBuilder();
int x = 0;
if(num <= 0){
return "";
}else if (num >= 1000) {
x = num / 1000;
for(int i = 0;i < x;i++){
temp.append("M");
}
return temp.toString() + toStr(num % 1000);
}else if (num >= 900 && num < 1000) {
return "CM" + toStr(num - 900);
}else if (num >= 500 && num < 1000){
return "D" + toStr(num - 500);
}else if (num >= 400 && num < 500) {
return "CD" + toStr(num - 400);
}else if (num >= 100 && num < 500) {
x = num / 100;
for(int i =0;i < x;i++) {
temp.append("C");
}
return temp.toString() + toStr(num % 100);
}else if(num >= 90 && num < 100){
return "XC" + toStr(num - 90);
}else if (num >= 50 && num < 100) {
return "L" + toStr(num - 50);
}else if (num >= 40 && num < 50 ) {
return "XL" + toStr(num - 40);
}else if (num >= 10 && num < 50) {
x = num / 10;
for(int i = 0;i < x;i++){
temp.append("X");
}
return temp.toString() + toStr(num % 10);
}else if (num == 9) {
return "IX";
}else if (num >= 5 && num < 10) {
return "V" + toStr(num - 5);
}else if(num == 4){
return "IV";
} else if (num < 5) {
for(int i = 0;i < num;i++){
temp.append("I");
}
return temp.toString();
}
return null;
}
}