【LeetCode 12. Integer to Roman】
5923 ワード
説明:
ローマ数字には、I、V、X、L、C、D、Mの7文字が含まれています.
例えば、ローマ数字2はIIと書かれており、2つの並列の1である.12は
通常、ローマ数字の中で小さい数字は大きな数字の右側にあります.しかし、例えば4は Iは、V(5)およびX(10)の左側に配置され、4および9を表すことができる. Xは、L(50)およびC(100)の左側に配置され、40および90を表すことができる. Cは、D(500)およびM(1000)の左側に配置され、400および900を表すことができる.
整数を与え、ローマ数字に変換します.入力は1~3999の範囲であることを確認します.
例1:
例2:
例3:
例4:
例5:
Kotlinコード実装:
参照先:https://leetcode.com/problems/integer-to-roman/
ローマ数字には、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つの場合にのみ適用されます.整数を与え、ローマ数字に変換します.入力は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.
Kotlinコード実装:
var number = intArrayOf(1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1)
var str = arrayOf("M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I")
var sb = StringBuilder()
fun intToRoman(num: Int): String {
var x = num
for (i in number.indices) {
while (x >= number[i]) {
sb.append(str[i])
x -= number[i]
}
if (x == 0) {
break
}
}
return sb.toString()
}
参照先:https://leetcode.com/problems/integer-to-roman/