前言
本文所使用的方法是官方题解,若想知道题解思路,请查看官方题解地址:https://leetcode-cn.com/problems/integer-to-roman/solution/zheng-shu-zhuan-luo-ma-shu-zi-by-leetcod-75rs/
一、题目示例
题目:
示例:
二、代码
代码如下(示例):
const int values[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
const char* symbols[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
char * intToRoman(int num){
char* roman = (char*)malloc(sizeof(char) * 16);
roman[0] = '\0';
int i, j = 0;
//每一次都要把最大的数存进数组
for(i = 0; i < 13; i++) {
while(num >= values[i]) {
strcpy((roman + strlen(roman)) , symbols[i]);
num -= values[i];
++j;
}
if(0 == num) {
break;
}
}
return roman;
}
结果如图所示: