日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Leetcode12. 整数转罗马数字(C++)

發布時間:2025/3/19 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode12. 整数转罗马数字(C++) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

羅馬數字包含以下七種字符:?I,?V,?X,?L,C,D?和?M。

字符 ? ? ? ? ?數值
I ? ? ? ? ? ? 1
V ? ? ? ? ? ? 5
X ? ? ? ? ? ? 10
L ? ? ? ? ? ? 50
C ? ? ? ? ? ? 100
D ? ? ? ? ? ? 500
M ? ? ? ? ? ? 1000
例如, 羅馬數字 2 寫做?II?,即為兩個并列的 1。12 寫做?XII?,即為?X?+?II?。 27 寫做??XXVII, 即為?XX?+?V?+?II?。

通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做?IIII,而是?IV。數字 1 在數字 5 的左邊,所表示的數等于大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為?IX。這個特殊的規則只適用于以下六種情況:

I?可以放在?V?(5) 和?X?(10) 的左邊,來表示 4 和 9。
X?可以放在?L?(50) 和?C?(100) 的左邊,來表示 40 和?90。?
C?可以放在?D?(500) 和?M?(1000) 的左邊,來表示?400 和?900。
給定一個整數,將其轉為羅馬數字。輸入確保在 1?到 3999 的范圍內。

示例?1:

輸入:?3
輸出: "III"
示例?2:

輸入:?4
輸出: "IV"
示例?3:

輸入:?9
輸出: "IX"
示例?4:

輸入:?58
輸出: "LVIII"
解釋: L = 50, V = 5, III = 3.
示例?5:

輸入:?1994
輸出: "MCMXCIV"
解釋: M = 1000, CM = 900, XC = 90, IV = 4.

解題思路

題目規定,是1-3999四個數。

也就是最大就是MMMM,因此,將個位、十位、百位、千位的數字分別對應上相應的數字即可。

解題代碼

#include <iostream> #include <string> using namespace std;class Solution { public:string getNum1000(int num1000) {if(num1000==3){return "MMM";} else if(num1000==2){return "MM";} else if(num1000==1){return "M";} else{return "";}}string getNum100(int num100) {switch (num100) {case 1:return "C";case 2:return "CC";case 3:return "CCC";case 4:return "CD";case 5:return "D";case 6:return "DC";case 7:return "DCC";case 8:return "DCCC";case 9:return "CM";default:return "";}}string getNum10(int num10) {switch (num10) {case 1:return "X";case 2:return "XX";case 3:return "XXX";case 4:return "XL";case 5:return "L";case 6:return "LX";case 7:return "LXX";case 8:return "LXXX";case 9:return "XC";default:return "";}}string getNum1(int num1) {switch (num1) {case 1:return "I";case 2:return "II";case 3:return "III";case 4:return "IV";case 5:return "V";case 6:return "VI";case 7:return "VII";case 8:return "VIII";case 9:return "IX";default:return "";}}string intToRoman(int num) {int num1000 = num/1000;int num100 = (num%1000)/100;int num10 = (num%100)/10;int num1 = (num%10);string res;res = getNum1000(num1000) + getNum100(num100)+getNum10(num10)+getNum1(num1);return res;} };//int main(){ // Solution solution; // string string1 = solution.intToRoman(1994); // cout<<string1; // return 0; //}

總結

以上是生活随笔為你收集整理的Leetcode12. 整数转罗马数字(C++)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。