测试用例
示例 2 :
输入: num = “10200”, k = 1
输出: “200”
解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。
示例 3 :
输入: num = “10”, k = 2
输出: “0”
解释: 从原数字移除所有的数字,剩余为空就是0。
Me
如果下一个元素比当前栈元素小,移除当前元素,把下一个元素入栈
10200
k =2
栈:1
k=1
0200
0<1
k = 0
栈:0
k==0
栈:0200
处理最开头的0,返回结果
10
k = 2
栈:1
k = 1
栈:0
k=0
接下来就要和上面的例子一样处理0
如果字符串是空就返回指定值
func removeKdigits(num string, k int) string {
digits := len(num) - k
stack := make([]byte, len(num))
top := 0
for i := range num {
for top > 0 && stack[top-1] > num[i] && k > 0 {
top--
k--
}
stack[top] = num[i]
top++
}
i := 0
for i < digits && stack[i] == '0' {
i++
}
if i == digits {
return "0"
}
return string(stack[i:digits])
}