Solution in Java:
public class Solution {
public String intToRoman(int num) {
int val[] = {1000, 500, 100, 50, 10, 5, 1};
String chrs[] = {"M", "D", "C", "L", "X", "V", "I"};
String result = "";
int digi = num/val[0];
for(int j=0; j<digi; j++) result+=chrs[0];
num = num%val[0];
for(int i=2; i<7; i+=2){
digi = num/val[i];
num = num%val[i];
if(digi>8) result+=chrs[i]+chrs[i-2];
else if(digi<4){
for(int j=0; j<digi; j++) result+=chrs[i];
}
else if(digi==4){
result+=chrs[i]+chrs[i-1];
}
else{//5<=digi<=8
result+=chrs[i-1];
digi = digi-5; //wrong statement: digi = digi%val[i-1]
for(int j=0; j<digi; j++) result+=chrs[i];
}
}
return result;
}
}
Note:
数组用一组值初始化:用大括号。。。。。。。