LeetCode in Kotlin

402. Remove K Digits

Medium

Given string num representing a non-negative integer num, and an integer k, return the smallest possible integer after removing k digits from num.

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:

Solution

@Suppress("NAME_SHADOWING")
class Solution {
    fun removeKdigits(num: String, k: Int): String {
        var k = k
        val list = CharArray(num.length)
        val len = num.length - k
        var top = 0
        for (i in 0 until num.length) {
            while (top > 0 && k > 0 && num[i] < list[top - 1]) {
                top--
                k--
            }
            list[top++] = num[i]
        }
        var number = 0
        while (number < len && list[number] == '0') {
            number++
        }
        return if (number == len) "0" else String(list, number, len - number)
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy