给定一个整数,将其转换成罗马数字。
返回的结果要求在1-3999的范围内。
4
-> IV
12
-> XII
21
-> XXI
99
-> XCIX
/*
思路:
1.定义一个数字数组和字符串数组存入相应的数字和罗马数字
2.循环判断给定数和数字数组
*/
public class Solution {
public String intToRoman(int num) {
if(num <= 0) {
return "";
}
//需要定义一些特殊值
int[] nums = {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 digit=0;
while (num > 0) {
// time = 12/1000 =0 ,12/40=0 12 /10 =1
int times = num / nums[digit];
num = num - (nums[digit] * times);
//存入对应的罗马
for ( ; times > 0; times--) {
sb.append(symbols[digit]);
}
//times为0则++
digit++;
}
return sb.toString();
}
}