402. 移掉K位数字——n位数去除m位数,剩下的数组成的新数最大或者最小
# encoding=utf-8class Solution(object):def removeKdigits(self, num, k):""":type num: str:type k: int:rtype: str"""# 特殊情况if k =...
·
# encoding=utf-8
class Solution(object):
def removeKdigits(self, num, k):
"""
:type num: str
:type k: int
:rtype: str
"""
# 特殊情况
if k == 0:
return num
if k == len(num):
return "0"
# 将num转换为list好处理,结果:123 --> ["1","2","3"]
num = list(num)
# 循环k趟,每趟去掉一位数,所以一共去除k位数
while k > 0:
flag = 1
# 如果num[idx] > num[idx + 1],那么应该去掉 num[idx]
for idx in range(len(num) - 1):
if num[idx] > num[idx + 1]:
num.pop(idx)
k -= 1
flag = 0
break
# 如果这一趟没有找到,那么意思就是对每一个位置,都有num[idx] <= num[idx + 1],那么此时,去掉最后一位上的数,剩下的数组成的当前趟的新数就是最小的,因为当前趟最后一个数是最大的。
if flag == 1:
k -= 1
num.pop(-1)
# 去除结果中的前导0。
while len(num) > 0:
if num[0] == "0":
num.pop(0)
else:
break
# 有可能走完k趟,并且去掉前导0后,num就为空了,此时需要返回0. 例如:num=1000 k=1
if len(num) == 0:
return "0"
else:
return "".join(num)
# print Solution().removeKdigits(num="112", k=1)
2.同理也可以寻找最大数:即n位数去除m位数,使得剩下的数组成的新数最大,原理同上,只改一个条件即可。
即将 if num[idx] > num[idx + 1] 改为: if num[idx] < num[idx + 1] 即可。
# encoding=utf-8
'''
leetcode402 是n位数去除m位数剩下的数最小,那么同理也可以做n位数去除m位数剩下的数最大
'''
class Solution(object):
def removeKdigits(self, num, k):
"""
:type num: str
:type k: int
:rtype: str
"""
# 特殊情况
if k == 0:
return num
if k == len(num):
return "0"
# 将num转换为list好处理,结果:123 --> ["1","2","3"]
num = list(num)
# 循环k趟,每趟去掉一位数,所以一共去除k位数
while k > 0:
flag = 1
# 如果num[idx] < num[idx + 1],那么应该去掉 num[idx]
for idx in range(len(num) - 1):
if num[idx] < num[idx + 1]:
num.pop(idx)
k -= 1
flag = 0
break
# 如果这一趟没有找到,那么意思就是对每一个位置,都有num[idx] >= num[idx + 1],那么此时,去掉最后一位上的数,剩下的数组成的当前趟的新数就是最大的,因为当前趟最后一个数是最小的。
if flag == 1:
k -= 1
num.pop(-1)
# 去除结果中的前导0。
while len(num) > 0:
if num[0] == "0":
num.pop(0)
else:
break
# 有可能走完k趟,并且去掉前导0后,num就为空了,此时需要返回0. 例如:num=1000 k=1
if len(num) == 0:
return "0"
else:
return "".join(num)
print Solution().removeKdigits(num="1008908",k=5)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)