题目描述
给定一个十进制的正整数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 @吉祥有事 的解决方法。