Given string num representing a non-negative integer num, and an integer k, return the smallest possible integer after removing k digits from num.
음이 아닌 정수 num을 나타내는 문자열 num과 정수 k가 주어지면, num에서 k자리를 제거한 후 가능한 가장 작은 정수를 반환합니다.
Example 1:
Input: num = "1432219", k = 3
Output: "1219"
Explanation: Remove the three digits 4, 3, and 2 to form the new number 1219 which is the smallest.
Example 2:
Input: num = "10200", k = 1
Output: "200"
Explanation: Remove the leading 1 and the number is 200. Note that the output must not contain leading zeroes.
Example 3:
Input: num = "10", k = 2
Output: "0"
Explanation: Remove all the digits from the number and it is left with nothing which is 0.
Constraints:
- 1 <= k <= num.length <= 10^5
- num consists of only digits.
- num does not have any leading zeros except for the zero itself.
코드
class Solution {
fun removeKdigits(num: String, k: Int): String {
val stack = mutableListOf<Char>()
var k = k
num.forEach { c ->
while (k > 0 && stack.isNotEmpty() && stack.last() > c) {
k -= 1
stack.removeLast()
}
stack.add(c)
}
val newStack = stack.slice(0..stack.lastIndex - k)
val res = newStack.joinToString("").trimStart('0')
return if (res != "") res else "0"
}
}
'LeetCode > Stack' 카테고리의 다른 글
[LeetCode][Kotlin] 1209. Remove All Adjacent Duplicates in String II (0) | 2024.12.02 |
---|---|
[LeetCode][Kotlin] 853. Car Fleet (0) | 2024.11.29 |
[LeetCode][Kotlin] 735. Asteroid Collision (0) | 2024.11.29 |