Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
Subscribe to see which companies asked this question.
Solution:
Tips:
solve this problem with recursion, just for practice.
Java Code:
public class Solution {
public String intToRoman(int num) {
if (num <= 0) {
return "";
}
if (num >= 900) {
return num >= 1000 ? "M" + intToRoman(num - 1000) : "CM" + intToRoman(num - 900);
} else if (num >= 400) {
return num >= 500 ? "D" + intToRoman(num - 500) : "CD" + intToRoman(num - 400);
} else if (num >= 90) {
return num >= 100 ? "C" + intToRoman(num - 100) : "XC" + intToRoman(num - 90);
} else if (num >= 40) {
return num >= 50 ? "L" + intToRoman(num - 50) : "XL" + intToRoman(num - 40);
} else if (num >= 9) {
return num >= 10 ? "X" + intToRoman(num - 10) : "IX" + intToRoman(num - 9);
} else if (num >= 4) {
return num >= 5 ? "V" + intToRoman(num - 5) : "IV" + intToRoman(num - 4);
} else {
return "I" + intToRoman(num - 1);
}
}
}