羅馬數(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) 的左邊邑遏,來表示 4 和 9。
X?可以放在?L?(50) 和?C?(100) 的左邊恰矩,來表示 40 和?90记盒。?
C?可以放在?D?(500) 和?M?(1000) 的左邊,來表示?400 和?900外傅。
給你一個(gè)整數(shù)纪吮,將其轉(zhuǎn)為羅馬數(shù)字。
示例?1:
輸入:?num = 3
輸出: "III"
示例?2:
輸入:?num = 4
輸出: "IV"
示例?3:
輸入:?num = 9
輸出: "IX"
示例?4:
輸入:?num = 58
輸出: "LVIII"
解釋: L = 50, V = 5, III = 3.
示例?5:
輸入:?num = 1994
輸出: "MCMXCIV"
解釋: M = 1000, CM = 900, XC = 90, IV = 4.
提示:
1 <= num <= 3999
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/integer-to-roman
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有萎胰。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)碾盟,非商業(yè)轉(zhuǎn)載請注明出處。
代碼實(shí)現(xiàn):
public StringintToRoman(int num) {
int data = num;
? ? StringBuilder sb =new StringBuilder();
? ? int mod = data /1000;
? ? data = data %1000;
? ? for (int i =0; i < mod; i++) {
sb.append("M");
? ? }
if (data >=900) {
data = data -900;
? ? ? ? sb.append("CM");
? ? }
if (data >=500) {
data = data -500;
? ? ? ? sb.append("D");
? ? }
if (data >=400) {
data = data -400;
? ? ? ? sb.append("CD");
? ? }
mod = data /100;
? ? data = data %100;
? ? for (int i =0; i < mod; i++) {
sb.append("C");
? ? }
if (data >=90) {
data = data -90;
? ? ? ? sb.append("XC");
? ? }
if (data >=50) {
data = data -50;
? ? ? ? sb.append("L");
? ? }
if (data >=40) {
data = data -40;
? ? ? ? sb.append("XL");
? ? }
mod = data /10;
? ? data = data %10;
? ? for (int i =0; i < mod; i++) {
sb.append("X");
? ? }
if (data >=9) {
data = data -9;
? ? ? ? sb.append("IX");
? ? }
if (data >=5) {
data = data -5;
? ? ? ? sb.append("V");
? ? }
if (data >=4) {
data = data -4;
? ? ? ? sb.append("IV");
? ? }
for (int i =0; i < data; i++) {
sb.append("I");
? ? }
return sb.toString();
}