-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path394.DecodeString.kt
More file actions
32 lines (26 loc) · 790 Bytes
/
394.DecodeString.kt
File metadata and controls
32 lines (26 loc) · 790 Bytes
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
//https://leetcode.com/problems/decode-string/description
fun decodeString(s: String): String {
val stack = mutableListOf<String>()
var currNum = 0
var currString = ""
for (char in s) {
when (char) {
in '0'..'9' -> {
currNum = currNum * 10 + (char - '0')
}
'[' -> {
stack.add(currString)
stack.add(currNum.toString())
currNum = 0
currString = ""
}
']' -> {
val num = stack.removeLast().toInt()
val prevString = stack.removeLast()
currString = prevString + currString.repeat(num)
}
else -> currString += char
}
}
return currString
}