给定一个包含非负整数的字符串 num (num 中没有前置 0)和一个数字 k,要求在 num 中剔除 k 个字符,使得剩下的字符串代表的数字最小。题目链接:**点我**
样例输入输出
输入:num = “1432219”, k = 3
输出:”1219”
输入:num = “10200”, k = 1
输出:”200”
解释:删除第一个 1,剩下 0200,去除前置 0,返回 200
问题解法
用一个字符串来存储剔除后剩下的字符,遍历原有字符串,对当前字符进行判断,如果当前字符是 0,则判断存储的结果字符串中的第一个和最后一个字符串,哪个大则剔除哪个,如果当前字符比存储结果字符串的最后一位小,则剔除存储结果字符串的最后一位,直到当前字符比存储结果的最后一位大时为止,然后将当前字符加入到结果字符串中。当然,为了不多删字符,每次剔除字符时需要计数并与 k 进行比较,只有剔除的数量小于 k 才能剔除。最后,当遍历完字符串后,如果剔除的字符数量还是小于 k ,则从结果字符串中末尾剔除直到剔除数量等于 k 为止。然后再剔除结果字符串的前置 0,最后判断是否是空字符串,如果是则返回 “0”,否则返回当前的结果字符串。代码如下