|
发表于 2020-4-23 19:27:05
|
显示全部楼层
本帖最后由 xiangjianshinan 于 2020-4-26 14:49 编辑
- '''
- 给定一个以字符串表示的非负整数 num,移除 num 中的 k 位数字,使得剩下的数字最小。
- 以字符串形式返回 num 移除 k 位数字后的数字。
- 示例 1:
- 输入:num = "1432219", k = 3
- 输出:"1219"
- 解释:移除掉三个数字 4, 3, 和 2 。
- 示例 2:
- 输入:num = "10200", k = 1
- 输出:"200"
- 解释:移掉首位的 1,剩下的数字为 200,注意输出不能有任何前导零。
- 示例 3:
- 输入:num = "10", k = 2
- 输出:"0"
- 解释:从原数字移除所有的数字,剩余为空就是 0。
- 解析题意:
- 问题:怎样移除K位的数字,使得剩下的数字最小?
- 1、首先不能否认,我们需要移除高位的数才能令数值最小;
- 2、于是将s的前K+1位数字比较后,留下最小值即可。
- 过程如下:
- '''
- def timu383(s,k):
- if len(s)<=k:
- return '0'
- else:
- ls = list(s) #输入:num = '112', k = 1 输出:'12' 预期结果:'11' 20200426 14:45
- for i in range(k):
- ls.remove(max(ls))
- ta = int(''.join(ls))
- tb = int(min(s[:k+1])+s[k+1:])
- tc = ta if ta<= tb else tb
- return str(tc)
- num = "1432219"
- k = 3
- print(timu383(num,k))
- num = "10200"
- k = 1
- print(timu383(num,k))
- num = "10"
- k = 2
- print(timu383(num,k))
- num = '112'
- k = 1
- print(timu383(num,k))
- print('done!')
复制代码
=======================
#输入:num = '112', k = 1 输出:'12' 预期结果:'11' 20200426 14:45修改
通过全部子串去取最大值后,与按逻辑去除前面的内容 比较后,输出小的结果的方式处理。
|
评分
-
查看全部评分
|