iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
佛心分享-刷題不只是刷題

只是單純想刷題XD系列 第 12

只是單純想刷題XD Day12

  • 分享至 

  • xImage
  •  

今天來講第12題

題目

https://ithelp.ithome.com.tw/upload/images/20240924/20160320OgzwvKXgnL.jpg

題目翻譯

使用羅馬數字來表示整數

解題思路

  1. 初始化結果字串

    • 定義一個空字串 str,用來儲存轉換結果的羅馬數字。
  2. 處理數字的不同範圍

    • 使用 while 迴圈來逐步減少數字 num 的值,並同時將對應的羅馬數字追加到結果字串 str 中。
    • 根據羅馬數字的規則,將數字轉換為對應的羅馬數字。依次檢查數字是否大於或等於各個重要的羅馬數字代表的值,如 1000 (M), 900 (CM), 500 (D), 400 (CD), 100 (C), 90 (XC), 50 (L), 40 (XL), 10 (X), 9 (IX), 5 (V), 4 (IV), 1 (I)。
  3. 逐步轉換數字

    • 1000 (M):如果數字 num >= 1000,則從 num 中減去 1000 並在結果字串中添加 "M"。
    • 900 (CM):如果 num >= 900,從 num 減去 900,並在字串中添加 "CM"。
    • 500 (D):如果 num >= 500,從 num 減去 500,並在字串中添加 "D"。
    • 400 (CD):如果 num >= 400,從 num 減去 400,並在字串中添加 "CD"。
    • 100 (C):如果 num >= 100,從 num 減去 100,並在字串中添加 "C"。
    • 90 (XC):如果 num >= 90,從 num 減去 90,並在字串中添加 "XC"。
    • 50 (L):如果 num >= 50,從 num 減去 50,並在字串中添加 "L"。
    • 40 (XL):如果 num >= 40,從 num 減去 40,並在字串中添加 "XL"。
    • 10 (X):如果 num >= 10,從 num 減去 10,並在字串中添加 "X"。
    • 9 (IX):如果 num >= 9,從 num 減去 9,並在字串中添加 "IX"。
    • 5 (V):如果 num >= 5,從 num 減去 5,並在字串中添加 "V"。
    • 4 (IV):如果 num >= 4,從 num 減去 4,並在字串中添加 "IV"。
    • 1 (I):如果 num >= 1,從 num 減去 1,並在字串中添加 "I"。
  4. 結束條件

    • num 減至 0 時,迴圈結束,所有對應的羅馬數字已經追加到字串 str 中。
  5. 返回結果

    • 最後,返回轉換後的羅馬數字字串 str

code

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

上一篇
只是單純想刷題XD Day11
下一篇
只是單純想刷題XD Day13
系列文
只是單純想刷題XD30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言