Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
分析:
I, V, X, L, C, D, M 分别对应 1, 5,10,50,100,500,1000
需要注意的是,需要将9,4开头的单独拿出来,因为他们的表示比较特殊。
"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" 分别对应
1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1
这样从高到低一个一个减下去就可以了。
public class Solution {
public String intToRoman(int num) {
StringBuffer sb = new StringBuffer();
int[] value = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] symbol = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
for(int i = 0; num != 0; i++){
while(num >= value[i]){
sb.append(symbol[i]);
num = num - value[i];
}
}
return sb.toString();
}
}