题目链接
法一
public String intToRoman(int num) {
StringBuilder ans = new StringBuilder();
int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] reps = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
for (int i = 0; i < values.length; i++) {
int cnt = num / values[i];
for (int j = 0; j < cnt; j++) {
ans.append(reps[i]);
}
num %= values[i];
}
return ans.toString();
}
法二
public String intToRoman_2(int num) {
StringBuilder ans = new StringBuilder();
int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] reps = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
for (int i = 0; i < 13; i++) {
while(num >= values[i]){
num -= values[i];
ans.append(reps[i]);
}
}
return ans.toString();
}
本地测试
lay.showTitle(12);
Solution12 sol12 = new Solution12();
System.out.println(sol12.intToRoman(58));
System.out.println(sol12.intToRoman_2(58));