Leetcode12-整数转罗马数字
题目链接:12. 整数转罗马数字 - 力扣(LeetCode)
看题目限制输入1 <= num <= 3999,就直接用暴力法写了,还比较简单
代码:
char* intToRoman(int num) {
char *res = (char*)malloc(100);
int index = 0;
int temp;
temp = num / 1000;
for (int i = 0; i < temp; i++) {
res[index] = 'M';
index++;
}
num = num % 1000;
temp = num / 100;
if (0 <= temp && temp <=3) {
for (int i = 0; i < temp; i++) {
res[index++] = 'C';
}
}
if (temp == 4) {
res[index++] = 'C';
res[index++] = 'D';
}
if (5 <= temp && temp <= 8) {
res[index++] = 'D';
for (int i = 0; i < temp-5; i++) {
res[index++] = 'C';
}
}
if (temp == 9) {
res[index++] = 'C';
res[index++] = 'M';
}
num = num % 100;
temp = num / 10;
if (0 <= temp && temp <=3) {
for (int i = 0; i < temp; i++) {
res[index++] = 'X';
}
}
if (temp == 4) {
res[index++] = 'X';
res[index++] = 'L';
}
if (5 <= temp && temp <= 8) {
res[index++] = 'L';
for (int i = 0; i < temp-5; i++) {
res[index++] = 'X';
}
}
if (temp == 9) {
res[index++] = 'X';
res[index++] = 'C';
}
temp = num % 10;
if (0 <= temp && temp <=3) {
for (int i = 0; i < temp; i++) {
res[index++] = 'I';
}
}
if (temp == 4) {
res[index++] = 'I';
res[index++] = 'V';
}
if (5 <= temp && temp <= 8) {
res[index++] = 'V';
for (int i = 0; i < temp-5; i++) {
res[index++] = 'I';
}
}
if (temp == 9) {
res[index++] = 'I';
res[index++] = 'X';
}
res[index] = '\0';
return res;
}