题目描述: 代码: package interview;/** * @author hxw * @create 2025-05-05-21:22 * @Description: 12. 整数转罗马数字 中等 */public class twelve { public static void main(String[] args) { } /** * 目的:七个不同的符号代表罗马数字,其值如下: * <p> * 符号 值 * I 1 * V 5 * X 10 * L 50 * C 100 * D 500 * M 1000 * 罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规则: * <p> * 如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字。 * 如果该值以 4 或 9 开头,使用 减法形式,表示从以下符号中减去一个符号,例如 4 是 5 (V) 减 1 (I): IV ,9 是 10 (X) 减 1 (I):IX。仅使用以下减法形式:4 (IV),9 (IX),40 (XL),90 (XC),400 (CD) 和 900 (CM)。 * 只有 10 的次方(I, X, C, M)最多可以连续附加 3 次以代表 10 的倍数。你不能多次附加 5 (V),50 (L) 或 500 (D)。如果需要将符号附加4次,请使用 减法形式。 * 给定一个整数,将其转换为罗马数字。 * <p> * 思路:暴力 */ class Solution { public String intToRoman(int num) { StringBuilder sb = new StringBuilder(); while (num > 0) { if (num >= 1000) { sb.append("M"); num -= 1000; } else if (num >= 900) { sb.append("CM"); num -= 900; } else if (num >= 500) { sb.append("D"); num -= 500; } else if (num >= 400) { sb.append("CD"); num -= 400; } else if (num >= 100) { sb.append("C"); num -= 100; } else if (num >= 90) { sb.append("XC"); num -= 90; } else if (num >= 50) { sb.append("L"); num -= 50; } else if (num >= 40) { sb.append("XL"); num -= 40; } else if (num >= 10) { sb.append("X"); num -= 10; } else if (num >= 9) { sb.append("IX"); num -= 9; } else if (num >= 5) { sb.append("V"); num -= 5; } else if (num >= 4) { sb.append("IV"); num -= 4; } else { sb.append("I"); num -= 1; } } return sb.toString(); } }}