1.题目描述
示例 1:
输入: num = 3
输出: "III"
示例 2:
输入: num = 4
输出: "IV"
示例 3:
输入: num = 9
输出: "IX"
示例 4:
输入: num = 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.
示例 5:
输入: num = 1994
输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.
2.解题思路及代码
(1)思路流程图
(2)代码
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"};//整数对应的标识
public String intToRoman2(int num) {
StringBuffer sb= new StringBuffer();//可编程长度编码
for (int i = 0; i < values.length; ++i) {
int value = values[i];//获取数值
String symbol = symbols[i];//获取数值对应的编码
while (num >= value) { //每次减去一个最接近的整数值
num -= value;//减去整数值,剩余的值
sb.append(symbol);//记录对应的标识
}
if (num == 0) { //当num==0时,结束
break;
}
}
return sb.toString();//将StringBuffer转化为字符串
}