public String intToRoman(int num) {
Map<Integer, Character> map = new HashMap<>();
map.put(1, 'I');
map.put(5, 'V');
map.put(10, 'X');
map.put(50, 'L');
map.put(100, 'C');
map.put(500, 'D');
map.put(1000, 'M');
String result = "";
String s = String.valueOf(num);
int l = s.length();
int key = 0;
char value = 'I';
char value2 = 'I';
for (int i = 0; i < l; i++) {
char c = s.charAt(i);
key = (int) Math.pow(10, l - 1 - i);
if(map.containsKey(5*key)) {
value2 = map.get(5 * key);
}
value = map.get(key);
switch (c) {
case '1':
result = result + value;
break;
case '2':
result = result + value + value;
break;
case '3':
result = result + value + value + value;
break;
case '4':
result = result + value + value2;
break;
case '5':
result = result + value2;
break;
case '6':
result = result + value2 + value;
break;
case '7':
result = result + value2 + value + value;
break;
case '8':
result = result + value2 + value + value + value;
break;
case '9':
value2 = map.get(key*10);
result = result + value + value2;
break;
}
}
return result;
}
后记:java容器真的是给编程带来了极大的方便,很多数据结构都不需要自己构建,直接利用已有的即可。如果用C/C++实现,估计需要AC很多次才能通过吧。