Roman Numerals, as used today, are based on seven symbols:[1]
Symbol | Value |
---|---|
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1,000 |
[解题思路]
按照区间处理digit:
digit <=3
digit =4
5<=digit<=8
digit =9
code:
public class IntegerToRoman {
public String intToRoman(int num) {
StringBuffer buffer = new StringBuffer();
char[] roman = {'M', 'D', 'C', 'L', 'X', 'V', 'I'};
int divide = 1000;
for(int i = 0; i <= 3; i++){
int d = num / divide;
num %= divide;
if(d <= 3){
append(buffer, roman, i*2, d);
}
else if(d == 4){
append(buffer, roman, i*2, 1);
append(buffer, roman, i*2-1, 1);
}
else if(d <= 8){
append(buffer, roman, i*2-1, 1);
append(buffer, roman, i*2, d - 5);
}
else{
append(buffer, roman, i*2, 1);
append(buffer, roman, (i - 1)*2, 1);
}
divide /= 10;
}
return new String(buffer);
}
public void append(StringBuffer buffer, char[] roman, int i, int d){
for(int j = 0; j < d; j++){
buffer.append(roman[i]);
}
}
}
No comments:
Post a Comment