题目描述
给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
输入描述:
输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。
输出描述:
输出保留下来的结果。
def largest_number_after_delete_some_digits(number_str, cnt):
str_list = list(number_str)
current_list_len, cnt_to_delete, i = len(str_list), cnt, 0
while cnt_to_delete > 0 and i < current_list_len - 1:
if str_list[i] >= str_list[i + 1]:
i += 1
else:
str_list.pop(i)
cnt_to_delete -= 1
current_list_len -= 1
i = i - 1 if i > 0 else 0
if cnt_to_delete > 0:
str_list = str_list[:-cnt_to_delete]
new_str = ''.join(str_list)
return int(new_str)
if __name__ == '__main__':
number_str = input()
cnt = int(input())
print(largest_number_after_delete_some_digits(number_str, cnt))
参考:
1、https://www.nowcoder.com/questionTerminal/7f26bfeccfa44a17b6b269621304dd4a @吉祥有事 的解决方法。