【LeetCode】整數轉羅馬數字 C語言 | 此刻,已成藝術(bushi)

Mryan2005發表於2024-03-10

Problem: 12. 整數轉羅馬數字

目錄
  • 思路
  • 解題方法
  • 複雜度
  • Code

思路

暴力破解 + 轉換

解題方法

由思路可知

複雜度

時間複雜度:

$O(n)$

空間複雜度:

$O(1)$

Code

char* intToRoman(int num) {
    char *s = (char*)malloc(sizeof(char)*4000), *p = s;
    while(num > 0) {
        if(num >= 1000) {
            num -= 1000;
            *(p++) = 'M';
        } else if(num >= 900) {
            num -= 900;
            *(p++) = 'C';
            *(p++) = 'M';
        } else if(num >= 500) {
            num -= 500;
            *(p++) = 'D';
        } else if(num >= 400) {
            num -= 400;
            *(p++) = 'C';
            *(p++) = 'D';
        } else if(num >= 100) {
            num -= 100;
            *(p++) = 'C';
        } else if(num >= 90) {
            num -= 90;
            *(p++) = 'X';
            *(p++) = 'C';
        } else if(num >= 50) {
            num -= 50;
            *(p++) = 'L';
        } else if(num >= 40) {
            num -= 40;
            *(p++) = 'X';
            *(p++) = 'L';
        } else if(num >= 10) {
            num -= 10;
            *(p++) = 'X';
        } else if(num >= 9) {
            num -= 9;
            *(p++) = 'I';
            *(p++) = 'X';
        } else if(num >= 5) {
            num -= 5;
            *(p++) = 'V';
        } else if(num >= 4) {
            num -= 4;
            *(p++) = 'I';
            *(p++) = 'V';
        } else {
            num -= 1;
            *(p++) = 'I';
        }
    }
    *p = 0;
    return s;
}

相關文章