forked from javadev/LeetCode-in-Kotlin
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSolution.kt
38 lines (35 loc) · 1.07 KB
/
Solution.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package g0001_0100.s0013_roman_to_integer
// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #String #Hash_Table #Math
// #Top_Interview_150_Array/String #2023_07_03_Time_211_ms_(83.47%)_Space_36.9_MB_(91.66%)
class Solution {
fun romanToInt(s: String): Int {
var x = 0
var y: Char
for (i in s.indices) {
y = s[i]
when (y) {
'I' -> x = getX(s, x, i, 1, 'V', 'X')
'V' -> x += 5
'X' -> x = getX(s, x, i, 10, 'L', 'C')
'L' -> x += 50
'C' -> x = getX(s, x, i, 100, 'D', 'M')
'D' -> x += 500
'M' -> x += 1000
}
}
return x
}
private fun getX(s: String, x: Int, i: Int, i2: Int, v: Char, x2: Char): Int {
var localX = x
if (i + 1 == s.length) {
localX += i2
} else if (s[i + 1] == v) {
localX -= i2
} else if (s[i + 1] == x2) {
localX -= i2
} else {
localX += i2
}
return localX
}
}