当前位置: 代码迷 >> 综合 >> LeetCode 402.移掉k位数字
  详细解决方案

LeetCode 402.移掉k位数字

热度:47   发布时间:2023-10-21 02:53:05.0

给定一个以字符串表示的非负整数 num,移除这个数中的 位数字,使得剩下的数字最小。

注意:

  • num 的长度小于 10002 且 ≥ k。
  • num 不会包含任何前导零。

示例 1 :

输入: num = "1432219", k = 3
输出: "1219"
解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。

示例 2 :

输入: num = "10200", k = 1
输出: "200"
解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。

示例 3 :

输入: num = "10", k = 2
输出: "0"
解释: 从原数字移除所有的数字,剩余为空就是0。

保证高位比低位小,就可以拿到最小的数字

class Solution:def removeKdigits(self, num, k):""":type num: str:type k: int:rtype: str"""if len(num)==k:return '0'i=0while i<len(num)-1 and k>0:if int(num[i])>int(num[i+1]):#前一位如果比后一位大,删掉前一位num=num[0:i]+num[i+1:]k=k-1if i>0:i=i-1else:i=i+1if k>0:num=num[:-k]while len(num)>1:if num[0]=='0':num=num[1:]else:breakreturn num