一、题目:12. 整数转罗马数字
二、题目解析:
- 罗马数字有以下七种基本字符:I,V,X,L,C,D 和 M。
- 整数转换为罗马数字的基本思路是从大到小依次减去对应的罗马数字,直到减不下去为止,然后转到下一个小的罗马数字,继续减,依次类推,直到所有的数字都转换完成。
- 由于罗马数字的表示方法有一定的规律,我们可以将每个数字的转换规则存储在一个二维数组中,然后通过查找数组中的规则来进行转换。
三、实现思路:
- 我们可以将每个罗马数字都表示为对应的整数,例如I表示为1,V表示为5,X表示为10等等。这样,在将整数转换为罗马数字时,我们可以从大到小依次减去对应的整数,直到数字变为0。
- 我们可以使用两个数组:一个数组存储每个罗马数字对应的整数值,另一个数组存储每个罗马数字本身。在循环中,我们可以从大到小遍历这两个数组,每次判断当前整数是否大于等于当前罗马数字对应的整数值。如果大于等于,则将当前罗马数字添加到结果字符串中,并将整数减去对应的整数值。如果小于,则遍历下一个罗马数字。
- 最终,当整数变为0时,我们就得到了对应的罗马数字表示。
四、代码实现:
public static String intToRoman(int num) {
int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
StringBuilder sb = new StringBuilder();
int i = 0;
while (num > 0) {
if (num >= values[i]) {
sb.append(symbols[i]);
num -= values[i];
} else {
i++;
}
}
return sb.toString();
}
五、测试结果:
六、结束