LeetCode刷題 題12.整數(shù)轉(zhuǎn)羅馬數(shù)字

羅馬數(shù)字包含以下七種字符: I赦拘, V甸各, X垛贤, L,C趣倾,D 和 M聘惦。

字符 數(shù)值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 羅馬數(shù)字 2 寫做 II 儒恋,即為兩個(gè)并列的 1善绎。12 寫做 XII ,即為 X + II 诫尽。 27 寫做 XXVII, 即為 XX + V + II 禀酱。

通常情況下,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊箱锐。但也存在特例比勉,例如 4 不寫做 IIII劳较,而是 IV驹止。數(shù)字 1 在數(shù)字 5 的左邊,所表示的數(shù)等于大數(shù) 5 減小數(shù) 1 得到的數(shù)值 4 观蜗。同樣地臊恋,數(shù)字 9 表示為 IX。這個(gè)特殊的規(guī)則只適用于以下六種情況:

I 可以放在 V (5) 和 X (10) 的左邊墓捻,來(lái)表示 4 和 9抖仅。
X 可以放在 L (50) 和 C (100) 的左邊,來(lái)表示 40 和 90砖第。
C 可以放在 D (500) 和 M (1000) 的左邊撤卢,來(lái)表示 400 和 900。
給你一個(gè)整數(shù)梧兼,將其轉(zhuǎn)為羅馬數(shù)字放吩。

示例 1:

輸入: num = 3
輸出: "III"

思路一:暴力解法
每次減去最大值

string intToRoman(int num) {
    string s;
    while (num >= 1000)
    {
        s += 'M';
        num -= 1000;
    }
    if (num >= 900)
    {
        s += "CM";
        num -= 900;
    }
    if (num >= 500)
    {
        s += "D";
        num -= 500;
    }
    if (num >= 400)
    {
        s += "CD";
        num -= 400;
    }
    while (num >= 100)
    {
        s += 'C';
        num -= 100;
    }
    if (num >= 90)
    {
        s += "XC";
        num -= 90;
    }
    if (num >= 50)
    {
        s += 'L';
        num -= 50;
    }
    if (num >= 40)
    {
        s += "XL";
        num -= 40;
    }
    while (num >= 10)
    {
        s += 'X';
        num -= 10;
    }
    if (num >= 9)
    {
        s += "IX";
        num -= 9;
    }
    if (num >= 5)
    {
        s += 'V';
        num -= 5;
    }
    if (num >= 4)
    {
        s += "IV";
        num -= 4;
    }
    while (num >= 1)
    {
        s += 'I';
        num -= 1;
    }
    return s;
    }

思路二:使用數(shù)組來(lái)處理
1)構(gòu)建數(shù)組存儲(chǔ)數(shù)值從1000到1
2)構(gòu)建字符串?dāng)?shù)組存儲(chǔ)從1000到1的羅馬數(shù)字
3)使用while循壞,每次減去最大值羽杰,并保存轉(zhuǎn)換的結(jié)果

string intToRoman(int num) {
        int nums[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
        vector<string> s = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
        int index = 0;
        string res = "";   //保存轉(zhuǎn)換的結(jié)果
        while(index <13){ //從頭減到尾
            while(num >= nums[index]){   //每次都減去最大值
                res += s[index];
                num -= nums[index];
            }
            index++;
        }
        return res;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末渡紫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子考赛,更是在濱河造成了極大的恐慌惕澎,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颜骤,死亡現(xiàn)場(chǎng)離奇詭異唧喉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門欣喧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)腌零,“玉大人,你說(shuō)我怎么就攤上這事唆阿∫娼В” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵驯鳖,是天一觀的道長(zhǎng)闲询。 經(jīng)常有香客問我,道長(zhǎng)浅辙,這世上最難降的妖魔是什么扭弧? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮记舆,結(jié)果婚禮上鸽捻,老公的妹妹穿的比我還像新娘。我一直安慰自己泽腮,他們只是感情好御蒲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诊赊,像睡著了一般厚满。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碧磅,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天碘箍,我揣著相機(jī)與錄音,去河邊找鬼鲸郊。 笑死丰榴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秆撮。 我是一名探鬼主播四濒,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼像吻!你這毒婦竟也來(lái)了峻黍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拨匆,失蹤者是張志新(化名)和其女友劉穎姆涩,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惭每,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骨饿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年亏栈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宏赘。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绒北,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出察署,到底是詐尸還是另有隱情闷游,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布贴汪,位于F島的核電站脐往,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扳埂。R本人自食惡果不足惜业簿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阳懂。 院中可真熱鬧梅尤,春花似錦、人聲如沸岩调。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)誊辉。三九已至矾湃,卻和暖如春亡脑,著一層夾襖步出監(jiān)牢的瞬間堕澄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工霉咨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛙紫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓途戒,卻偏偏與公主長(zhǎng)得像坑傅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喷斋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容