贪心法
class Solution {
public String intToRoman(int num) {
// 数字到字符串的映射
int[] keys = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] values = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
StringBuilder res = new StringBuilder();
// 贪心做法,找适合它的最大符号。我们减去它,然后寻找适合余数的最大符号,依此类推,直到余数为0。
for (int i = 0; i < 13; i++) {
while (num >= keys[i]) {
num -= keys[i];
res.append(values[i]);
}
}
return res.toString();
}
}
- 时间复杂度 O(1)
- 空间复杂度 O(1)