Leetcode 12. Integer to Roman

Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.

羅馬數(shù)字記數(shù)方法:

基本字符 I V X L C D M
相應(yīng)的阿拉伯?dāng)?shù)字表示為 1 5 10 50 100 500 1000
相同的數(shù)字連寫、所表示的數(shù)等于這些數(shù)字相加得到的數(shù)、如:Ⅲ=3;
小的數(shù)字在大的數(shù)字的右邊、所表示的數(shù)等于這些數(shù)字相加得到的數(shù)、 如:Ⅷ=8、Ⅻ=12;
小的數(shù)字、(限于 Ⅰ、X 和 C)在大的數(shù)字的左邊、所表示的數(shù)等于大數(shù)減小數(shù)得到的數(shù)、如:Ⅳ=4、Ⅸ=9;
正常使用時(shí)、連寫的數(shù)字重復(fù)不得超過三次;
在一個(gè)數(shù)的上面畫一條橫線、表示這個(gè)數(shù)擴(kuò)大 1000 倍。

組數(shù)規(guī)則

基本數(shù)字 Ⅰ、X 、C 中的任何一個(gè)、自身連用構(gòu)成數(shù)目、或者放在大數(shù)的右邊連用構(gòu)成數(shù)目、都不能超過三個(gè);放在大數(shù)的左邊只能用一個(gè);
不能把基本數(shù)字 V 、L 、D 中的任何一個(gè)作為小數(shù)放在大數(shù)的左邊采用相減的方法構(gòu)成數(shù)目;放在大數(shù)的右邊采用相加的方式構(gòu)成數(shù)目、只能使用一個(gè);

分析

將一個(gè)整數(shù)轉(zhuǎn)化為羅馬數(shù)字。因此可以通過數(shù)位上的數(shù)字挨個(gè)解析,之后組成為答案。
也可以依次減去{1000,900,500,400,100,90,50,40,10,9,5,4,1},組成最后的答案。

char* intToRoman(int num) {
    char* c[4][10]={
            {"","I","II","III","IV","V","VI","VII","VIII","IX"},
            {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},
            {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},
            {"","M","MM","MMM"}
        };
        char * ans=(char *)malloc(sizeof(char)*50);
        int length=0,i=0;
        int temp=num/1000%10;
        while(c[3][temp][i]!='\0')
        {
            ans[length]=c[3][temp][i];
            length++;
            i++;
        }
        i=0;
        temp=num/100%10;
        while(c[2][temp][i]!='\0')
        {
            ans[length]=c[2][temp][i];
            length++;
            i++;
        }
        i=0;
        temp=num/10%10;
        while(c[1][temp][i]!='\0')
        {
            ans[length]=c[1][temp][i];
            length++;
            i++;
        }
        i=0;
        temp=num%10;
        while(c[0][temp][i]!='\0')
        {
            ans[length]=c[0][temp][i];
            length++;
            i++;
        }
        ans[length]='\0';
        return ans;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容