使用语言: C语言
代码:
// LeetCode Problem No.12 Integer to Roman (整形数转罗马数字)
// by Gun7Sum a.k.a. john11, 2022.03.31
struct RomanTable {
char *rmstr;
int num, len;
};
char* intToRoman(int num)
{
static struct RomanTable rmtable[13] = {
{"M", 1000, 1}, {"CM", 900, 2}, {"D", 500, 1},
{"CD", 400, 2}, {"C", 100, 1}, {"XC", 90, 2},
{"L", 50, 1}, {"XL", 40, 2}, {"X", 10, 1},
{"IX", 9, 2}, {"V", 5, 1}, {"IV", 4, 2},
{"I", 1, 1}
};
static char result[64];
int pos=0, gen, num0=num, i;
for(gen = 0; gen < 13; gen++) {
while(num0 >= rmtable[gen].num) {
for(i = 0; i < rmtable[gen].len; i++) {
result[pos] = rmtable[gen].rmstr[i];
pos++;
}
num0 -= rmtable[gen].num;
}
}
result[pos] = 0x00;
return &result;
}