Leetcode 12. 整数からローマ数字へ
6485 ワード
タイトルの説明
ローマ数字には、I、V、X、L、C、D、Mの7文字が含まれています.
たとえば、ローマ数字2は
通常、ローマ数字の中で小さい数字は大きな数字の右側にあります.しかし、例えば4は
構想
数値が与えられた後、対応する数値を高い値から低い値まで順次減算します.その後、対応するローマ数字をつなぎ合わせるといいです.eg: num = 1994, romans = ""
コード#コード#
普通の考えはこのように感じて、leetcodeが神人の題解があることを見て、みんなに膜拝を参考にさせます:神の題解
ローマ数字には、I、V、X、L、C、D、Mの7文字が含まれています.
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
たとえば、ローマ数字2は
II
と書かれています.つまり、2つの並列の1です.12はXII
と書いてあります.つまり、X
+II
です.27はXXVII
と書いてあります.つまり、XX
+V
+II
です.通常、ローマ数字の中で小さい数字は大きな数字の右側にあります.しかし、例えば4は
IIII
ではなくIV
と書くという特例もある.数字1は数字5の左側にあり、表す数は大数5から小数1を減らした数値4に等しい.同様に、数字9はIX
として表される.この特殊なルールは、次の6つの場合にのみ適用されます.I
は、V
(5)およびX
(10)の左側に配置され、4および9を表すことができる.X
は、L
(50)およびC
(100)の左側に配置され、40および90を表すことができる.C
は、D
(500)およびM
(1000)の左側に配置され、400および900を表すことができる.整数を与え、ローマ数字に変換します.入力は1~3999の範囲であることを確認します.構想
数値が与えられた後、対応する数値を高い値から低い値まで順次減算します.その後、対応するローマ数字をつなぎ合わせるといいです.eg: num = 1994, romans = ""
num = 1994 - 1000 = 994
romans = "M"
num = 994 - 900 = 94
romans = "MCM"
num = 94 - 90 = 4
romans = "MCMXC"
num = 4 - 4 = 0
romans = "MCMXCIV"
コード#コード#
public String intToRoman(int num) {
int[] nums = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] romans = new String[]{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
StringBuilder res = new StringBuilder();
for (int i = 0; i < 13; i++) {
while (num >= nums[i]) {
res.append(romans[i]);
num = num - nums[i];
}
}
return res.toString();
}
普通の考えはこのように感じて、leetcodeが神人の題解があることを見て、みんなに膜拝を参考にさせます:神の題解