题目链接: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;
}