思路: 手写2个数组, 一个存整数, 一个存罗马字母, 都从大到小排序, 将输入值从左到右做减法
public class NumberToRoman {
/**
* 数字转罗马字母,规则如下:
* 1-I,4-IV,5-V,9-IX,10-X,40-XL,50-L,90-XC,100-C,400-CD,500-D,900-CM,1000-M
* @param num
* @return
*/
public String numberToRoman(int num) {
StringBuilder sb = new StringBuilder();
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" };
int i = 0;
while(num > 0){
if(num >= values[i]){
sb.append(symbols[i]);
num -= values[i];
}else{
i++;
}
}
return sb.toString();
}
}
网友评论