zoukankan      html  css  js  c++  java
  • 【牛客网刷题】保留最大的数

    题目描述

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

  • 相关阅读:
    Docker Get Started VI
    Docker Get Started V
    Docker Get Started III
    Docker Get Started IV
    Docker Get Started II
    Docker Get Started I
    贝叶斯公式
    LRU缓存
    二进制中1的个数
    2.准备工作之Gradle
  • 原文地址:https://www.cnblogs.com/zhangwei22/p/9930241.html
Copyright © 2011-2022 走看看