代码 1 贪心:
- stack 维护单调递增栈,但维护的次数仅限 k 次,
- for 循环结束后,如果 k 还不为 0 ,则直接从队尾截掉 k 个元素即可
- 最后把左边的 0 给去掉
- 且处理一个特殊情况,即 ans 为空
func removeKdigits(num string, k int) string {
stack := []byte{}
for i := range num {
digit := num[i]
for k > 0 && len(stack) > 0 && digit < stack[len(stack)-1] {
stack = stack[:len(stack)-1]
k--
}
stack = append(stack, digit)
}
stack = stack[:len(stack)-k]
ans := strings.TrimLeft(string(stack), "0")
if ans == "" {
ans = "0"
}
return ans
}